精华内容
下载资源
问答
  • 前言 本文主要讲解C语言的随机函数,...随机数主要是通过rand()函数产生的,rand() 函数可以随机产生一个正整数,它会产生一个无符号整数,范围在1~32767,即字节16位的整数最大值。而GNU C++产生的随机数范围为2...

    感谢平台分享-http://bjbsair.com/2020-04-10/tech-info/53235.html

    前言

    本文主要讲解C语言的随机函数,学习随机函数将由此拉开序幕,亲爱的准备好了没?

    随机数

    随机数主要是通过rand()函数产生的,rand() 函数可以随机产生一个正整数,它会产生一个无符号整数,范围在1~32767,即两字节16位的整数最大值。而GNU C++产生的随机数范围为2147483647。 范围中的每一个数在每次随机调用rand时都有相同的概率被选中。**使用随机函数的时候需要加上#inlcude <stdlib.h> 头文件。**如以下案例:

    C语言随机函数种子不知道是什么?试试这篇文章,全面解析随机函数

    **注意:每次程序运行的结果答案都是相同的,这显然不是我们想要的。**这是因为,rand函数不是真正的随机数生成器,而srand()会设置供rand()使用的随机数种子。如果你在第一次调用rand()之前没有调用srand(),那么系统会为你自动调用srand()。而使用同种子相同的数调用 rand()会导致相同的随机数序列被生成。如果要确保每次产生的都不一样,我们需要引用一个专门为rand设置随机化种子的函数srand().

    随机函数种子

    随机函数种子srand函数在库中说明如下:

    //接口说明:  
      
    time()  returns  the  time  as  the  number  of  seconds  since  the Epoch,  
      1970-01-01 00:00:00 +0000 (UTC).     
      
    If tloc is non-NULL, the return value is also stored in the memory  pointed to by tloc.
    

    C语言随机函数种子不知道是什么?试试这篇文章,全面解析随机函数

    意思就是:要想每次随机结果不一样,就要每次运行更改种子,time函数返回当前时间距离197-01-01的描述,每次运行都不一样,正好可以当做种子,既就是大家学习的rand()函数的时候,老师让大家写srand((unsigned int)time(NULL))的原因,让随机数与时间绑定关系,时间在改变,随机数自然能够改变。

    其实srand函数的参数编程中可以自己随意设置,伪随机就是每次得到的数据有规律可循,默认情况下数字在10x7fff,也就是(132767)。当设置参数为srand(1000),则生成的随机数是1000~0x7fff。

    如下实例:

    C语言随机函数种子不知道是什么?试试这篇文章,全面解析随机函数

    随机函数固定范围

    主要思路其实非常简单,就是通过取余来做即可

    C语言随机函数种子不知道是什么?试试这篇文章,全面解析随机函数

    展开全文
  • vb.net加法练习器

    2011-11-21 13:05:52
    这是一个用vb.net编写程序,主要是由计算机随机产生个两位正整数的加法练习题,给用户进行加法运算练习,并统计练习结果。
  • 游戏规则是这样:计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确位置上。 比如计算机随机产生数字为1122。如果玩家猜1234,...
  • 你必须知道495C语言问题

    千次下载 热门讨论 2015-05-08 11:09:25
    3.18 需要根据条件把一个复杂表达式赋给个变量中的一个。可以用下面这样代码吗?((condition)?a:b)=complicated_expression; 3.19 我有些代码包含这样表达式。a?b=c:d有些编译器可以接受,有些却不能。为...
  • 游戏规则是这样:计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确位置上。 比如计算机随机产生数字为1122。如果玩家猜1234,...
  • 《你必须知道495C语言问题》

    热门讨论 2010-03-20 16:41:18
    3.18 需要根据条件把一个复杂表达式赋给个变量中的一个。可以用下面这样代码吗?((condition) ? a : b)= complicated_expression; 41  3.19 我有些代码包含这样表达式。a ? b=c : d 有些编译器可以接受...
  • 2020-12-08

    2020-12-08 22:31:57
    随机产生一个n阶的两位正整数方阵,输出 这个方阵,求其上三角阵所有元素之和及下三角元素之和。(n由键盘输入,需要判断n合法性)

    随机产生一个n阶的两位正整数方阵,输出
    这个方阵,求其上三角阵的所有元素之和及下三角元素之和。(n由键盘输入,需要判断n的合法性)

    展开全文
  • 3.18 需要根据条件把一个复杂表达式赋给个变量中的一个。可以用下面这样代码吗?((condition) ? a : b)= complicated_expression; 41  3.19 我有些代码包含这样表达式。a ? b=c : d 有些编译器可以接受...
  • 你必须知道495C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    3.12 我需要根据条件把一个复杂表达式赋值给个变量中一 个。可以用下边这样代码吗? ((condition) ? a : b) = complicated expression; . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 目录iii ...
  • 微软JavaScript手册

    2009-04-08 22:54:53
    concat 方法 (String) 返回一个包含给定的两个字符串连接String 对象。 条件(三元)运算符 (?:) 根据条件执行个表达式之一。 constructor 属性 指定创建对象函数。 continue 语句 停止循环当前迭代...
  • javascript文档

    2009-08-11 10:44:24
    concat 方法 (String) 返回一个包含给定的两个字符串连接String 对象。 条件(三元)运算符 (?:) 根据条件执行个表达式之一。 constructor 属性 指定创建对象函数。 continue 语句 停止循环当前迭代...
  • JScript 语言参考

    2009-05-28 08:53:39
    concat 方法 (String) 返回一个包含给定的两个字符串连接String 对象。 条件(三元)运算符 (?:) 根据条件执行个表达式之一。 constructor 属性 指定创建对象函数。 continue 语句 停止循环当前迭代...
  • C语言面试题

    2015-01-08 12:22:16
    1.随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数,最小数 2.编程将0-1000所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个立方之和等于该整数的三数。 3.输入个数,...


    1.随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数,最小数
    2.编程将0-1000所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个 各个位立方之和等于该整数的三位数。
    3.输入两个数,求最大公约数和最小公倍数。
    4.一个球从100m高度自由落下,每次落地后反跳回原来高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高。
    5.已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
    1、随机产生20个[10 , 50]的正整数存到数组中,并求数组中的所有元素最大值、最小值、平均值以及各元素之和,及第二大值。
    2.编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,用空格来分隔单词。
    3、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3...。凡是报到“3”就退出圈子,最后留在圈子内的人就是出卖耶稣的叛徒。请找出它原来的序号。
    4.将两个排好序的数组,合并到另外一个数组中,并且合并之后的数组也是有序的。
    5.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
    6,给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
    7.,一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
    8.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。周一:Monday 周二:Tuesday  周三:Wendesday 周四:Thursday 周五:Friday 周六:Saturday
     周日:Sunday,
    9.有1000000个数,每个数取值范围是0-999999找出其中重复的数,重复次数。


     for(循环变量初始化;循环条件;循环增量){
            语句(循环体)
    }
    initialization循环变量初始化
    condition 条件(重复说明必须要满足的条件)increment循环变量增值.statements语句段 循环体(每次要反复执行的内容),while  do…while的区别:对于while 循环,需要先判断循环条件,然后执行循环体,对于 do...while 来说不管循环条件是否成立,先执行一次循环体,然后在判断循环条件是否成立,while for 的区别while 多用于不明确循环次数时使用,而for多用于知道循环次数时使用,for 可以转换成while ,但是while 不能转换为for,为何使用循环,当我做同一件事,俩次或者俩次以上时,就要考虑使用循环,把重复做的操作作为循环体continue;//结束本次循环也就是对于该次循环执行到这终止,然后执行i++;继续下一次循环,公式arc4random() % (b - a + 1) +a

    arc4random()随机函数
     
    求[a,b]范围内的随机数

    展开全文
  • 输入一个正整数n (1),再输入n 个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后n 个数。 (25)抓住肇事者 一辆卡车违反交通规则,撞人后逃跑。现场共有三个目击者,但都没有记住车号,...
  • LINGO软件学习

    2009-08-08 22:36:50
    雇员集中雇员可以有一个薪水属性,也可以有一个生日属性等等。 LINGO有种类型集:原始集(primitive set)和派生集(derived set)。 一个原始集是由一些最基本对象组成一个派生集是用一个或多个其它...
  • 有序数据程序设计

    2021-01-24 16:45:02
    随机产生N 个正整数(10 < Ν ≤20 )存入数组 a 中,输出 a 中最大值,最小值及求出其平均值(保留两位小数) tips:下面代码可供参考 代码如下: #include<stdio.h> #include<stdlib.h>/*srand...

    题目一

    随机产生N 个正整数(10 < Ν ≤20 )存入数组 a 中,输出 a 中的最大值,最小值及求出其平均值(保留两位小数)


    tips:下面代码可供参考

    代码如下:

    #include<stdio.h>
    #include<stdlib.h>/*srand()用头文件stdlib.h;time(NULL)用time.h*/
    #include<time.h>
    int main()
    {
    	int N, i,min,max;
    	float sum = 0.00;
    	int a[100] = { 0 };/*设定一个数组*/
    	srand(unsigned(time(NULL)));/*这里可以用time_t  t ;srand(unsigned time(&t));表示*/
    	/*用time(NULL)表示则不用定义time_t型的变量t*/
    	N = rand() % 10 + 11; /*产生随机数的个数的范围在10<N<=20之间*/
    	printf("随机数的个数为:%d\n", N);
    	printf("这个随机数组为:\n");
    	for ( i = 0; i <N; i++)
    	{
    		a[i] = rand()%100;/*随机数的范围在0~100之内,并且将产生的随机数输入一个数组中*/
    		printf("a[%d]=%d\t", i,a[i]);
    		sum = sum+a[i];/*计算数组中元素之和*/
    		if (i==0)
    		{
    			max = min = a[i];
    		}
    		else
    		{
    			if (min>a[i])
    			{
    				min = a[i];
    			}
    			else if(max<a[i])
    			{
    				max = a[i];
    			}
    		}
    	}
    	printf("该数组的元素之和为:%.2f\n", sum);
    	float average;
    	average = sum/ N;
    	printf("该数组中最大的值为:%d\t,最小的值为:%d\t,平均数为:%.2f\t", max, min, average);
    	return 0;
    }
    

    题目二

    ##餐饮服务质量调查打分:
    某公司的主管需要了解一年来公司的营业状况,比较一下各月份的销售收入状况。如果仅给出一大堆数据,这显然太不直观了,如果能将这些数据以条形图(直方图)的形式表示,将会大大增加这些数据的直观性,也便于数据的分析与对比。下面以顾客对餐饮服务打分为例,练习这方面的程序编写方法。假设有40个学生被邀请来给自助餐厅的食品和服务质量打分,分数划分为1~10这10个等级(1表示最低分,10表示最高分),试统计调查结果,并用*打印出如下形式的统计结果直方图。
    Grade Count Histogram
    1 5 *****
    2 10 **********
    3 7 *******

    10 3 ***
    提示:
    –定义数组score存放打的分数
    –定义数组count为计数器(count[0]不用)
    –计算统计结果:设置一个循环,依次检查数组元素值score[i],是1则将数组元素count【1】加1,是2则将数组元素count【2】加1,依此类推
    for (i=0; i<STUDENTS; i++)
    {
    count[score[i]] ++;
    }

    统–打印统计结果,设置一个循环,按count数组元素的值,打印相应个数的符号’*’

    tips:下面代码可供参考
    代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    int main()
    {
    	int score[100] = { 0 };
    	int count[100] = {0};
    	int i, STUDENTS;
    	STUDENTS = 40;
    	srand(unsigned(time(NULL)));
    	for (i = 0; i < STUDENTS; i++)
    	{
    		score[i] = rand() % 10 + 1;/*评分为1~10*/
    		/*printf("%d\t", score[i]);*/
    		count[score[i]] ++;
    	}
    	printf("Grade\tCount\tHistogram\n");
    	  int h, k;
    	  for (k = 1; k <= 10;k++)/*k相当于等级*/
    	  {
    		  printf("%d\t%d\t", k, count[k]);
    		  for (h = 1; h <=count[k]; h++)
    		  {
    			  printf("%c",'*');
    		  }
    		  printf("\n");
    	  }
    	return 0;
    }
    

    题目三

    ##检验并打印魔方矩阵
    在下面的5×5阶魔方矩阵中,每一行、每一列、每一对角线上的元素之和都是相等的,试编写程序将这些魔方矩阵中的元素读到一个二维整型数组中,然后检验其是否为魔方矩阵,并将其按如下格式显示到屏幕上。
    在这里插入图片描述
    tips:下面代码可供参考
    代码如下:

    #include<stdio.h>
    int main()
    {
    	int i, j,sum,N;
    	sum = 0;
    	int a[5][5] = { 17,24,1,8,15,23,5,7,14,16,4,6,13,20,22,10,12,19,21,3,11,18,25,2,9 };
    	//若想测试其它矩阵是不是魔方矩阵,可以在这数组上面进行修改
    	for ( i = 0; i < 5; i++)
    	{
    		for (j = 0; j < 5; j++)
    		{
    			sum += a[i][j];
    		}
    	}
    	N = sum / 5;//魔方矩阵的特点:每一行的和=每一列的和=对角线的和=全部元素的和的1/5
    	for ( i = 0; i < 5; i++)
    	{
    		sum = 0;//每一次循环都要重置sum的值
    		for ( j = 0; j < 5; j++)
    		{
    			sum += a[i][j];//求每一行的和
    		}
    		if (sum=N)
    		{
    			break;
    		}
    		else
    		{
    			printf("这不是魔方矩阵\n");
    			return 0;
    		}
    	}
    	for ( i = 0; i < 5; i++)
    	{
    		sum = 0;
    		for ( j = 0; j < 5; j++)
    		{
    			sum += a[j][i];//求每一列的和
    		}
    		if (sum=N)
    		{
    			break;
    		}
    		else
    		{
    			printf("这不是魔方矩阵\n");
    			return 0;
    		}
    	}
    	int sum1, sum2;
    	sum1 = sum2 = 0;
    	for ( i = 0; i < 5; i++)
    	{
    		for ( j = 0; j < 5; j++)
    		{
    			if (i == j)
    			{
    				sum1+= a[i][j];//这是主对角线的和
    			}
    			if (i+j==4)
    			{
    				sum2 += a[i][j];//这是副对角线的和
    			}
    		}
    	}
    	if (sum1=sum2=N)
    	{
    		printf("这是个魔方矩阵:\n");
    		for  (i = 0; i <5; i++)
    		{
    			for (j = 0; j < 5; j++)
    			{
    				printf("%d\t", a[i][j]);
    			}
    			printf("\n");
    		}
    	}
    	else
    	{
    		printf("这不是魔方矩阵。\n");
    	}
    
    	return 0;
    }
    

    总结

    1. 产生随机数,需要rand函数里的随机数发生器;而srand 函数是随机数发生器的初始化函数。srand()用头文件stdlib.h; srand函数: srand(unsigned seed );在产生随机数的时候,往往是使用系统的时间作为”种子“进行初始化,这样在产生两次的随机数就不会一样。当srand()的参数值固定的时候,rand()获得的数也是固定的。获取系统的时间,使用time函数。它的返回值为从1970/01/01 00:00:00 到现在所持续的秒数,然后将time_t型数据转化为unsigned型再传给srand函数,即: srand(unsigned time(&t)); 还有一个经常用法,不需要定义time_t型t变量,即: srand(unsigned (time(NULL)))
    time(NULL)头文件用time.h //只能精确到秒
    当随机函数使用for 循环时,运行速度非常快,在一秒之内就运行完成了,而 time() 函数得到的时间只能精确到秒,所以每次循环得到的时间都是一样的,这样一来,种子也就是一样的,随机数也就一样了。(可以使用sleep()来经过秒)

    2.rand()函数的取值范围为:0~32767;rand()%100结果是随机数除以100后所得的余数,即限定随机的范围是在0~99之间。
    可参考:
    https://www.runoob.com/cprogramming/c-function-srand.html
    https://blog.csdn.net/cx1165597739/article/details/89373765
    3.当用int来定义一维数组的时候,当只定义一个数组的时候可以不用给数组设置初始值(即int a[100];可以使程序运行)。当给多个数组定义的时候,则必须给数组设置一个初始值(即int a[100]={0}; int b[100]={0};);虽然没有设置初始值也会运行程序,但是该显示的结果是错误的。
    例如下面两张截图:

    错误的:int score[100],count[100];错误的:int score[100],count[100];
    正确的:int score[100]={0}; int count[100]={0};
    错误的
    4.注意:不完全初始化”和“完全不初始化”不一样。如果“完全不初始化”,即只定义“int a[5];”而不初始化,那么各个元素的值就不是0了,所有元素都是垃圾值。
    可参考:http://c.biancheng.net/view/184.html

    展开全文
  • 练习P20入门版答案

    2018-04-20 10:51:04
    17. 一个正整数的数字是6,如果把个数字移到首,所得到数是原数4倍,试编程找出满足条件最小正整数。 18. 某本书页码从1开始,小明算了算,总共出现了202个数1,试编程求这本书一共有多少页? 19. ...
  • 3.3.7 实现一个函数,对一个正整数n,算得到1需要最少操作次数。操作规则为:如果n为偶数,将其除以2;如果n为奇数,可以加1或减1;一直处理下去。 3.3.8 找到满足条件数组 3.3.9 一个含有50M个URL记录...
  • 达内 coreJava 习题答案

    2010-02-10 19:49:01
    规律:一个数等于前个数之和 //计算斐波那契数列(Fibonacci)第n个值 public class Fibonacci{ public static void main(String args[]){ int n = Integer.parseInt(args[0]); int n1 = 1;//第一个数 int n2...
  • 然后进入随机抽取试题部分,单选题和多选题抽取很相似,只不过一个是单选按钮,一个是多选按钮罢了。这里只解释单选题部分。 strid1=""是定义了一个字符串变量,并先赋值为空。 Randomize是产生随机种子,在使用...
  • 2) 出题函数,也是本程序最关键的一个函数,通过使用“rand()%10”或“rand()%100”来获得一个0到9一位整数随机值或得到0到99的两位整数随机值来为用户出题,并判断用户答案对错; 3) 评分系统,是在用户...
  • asp在线考试系统(asp+access实现)

    热门讨论 2009-04-04 19:34:08
    然后进入随机抽取试题部分,单选题和多选题抽取很相似,只不过一个是单选按钮,一个是多选按钮罢了。这里只解释单选题部分。 strid1=""是定义了一个字符串变量,并先赋值为空。 Randomize是产生随机种子,在使用...
  • PT80-NEAT开发指南v1.1

    2014-06-24 18:38:34
    建立一个应用程序 ................................................................................................................................ 17 应用程序关闭 .......................................
  • 与开发人员在测试组环境多次重复以上步骤,发现11群计次表话单有时正常,有时其出中继群号就为一个随机值,发生异常频率比较高。为什么其它群话单正常,唯独11群不正常呢?11群是四个群中最小群,其中继计...
  • 实例022 求一个正整数的所有因子 27 实例023 一元钱兑换方案 28 实例024 对调数问题 29 实例025 数平方和运算问题 30 1.5 数组 31 实例026 逆序存放数据 32 实例027 相邻元素之和 33 实例028 选票...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

随机产生一个两位的正整数