C语言中随机数的生成范围
编译环境为:vs2013
用于生成从1到3的整数随机数的代码如下:
# includestdio.h
#includetime.h
#includestdlib.h
#define max 3 //这个函数的意义是:随机产生的最大数是3。
#define min 1 //这个函数的意义是:随机生成最小的数为1。
int main()
{
int num
srand(time(0));
num = rand()%(max-min)min;//从这个意义上来说,“%”就是模运算的意思。
Printf("随机数:%d\n ",num);
系统(“暂停”);//这段代码可以让弹出的黑框不会一下子消失。
返回0;
}
扩展数据:
根据密码学的原理,随机数的随机性测试可以分为三个标准:
条件一,统计伪随机性。统计上的伪随机性是指在给定的随机比特流样本中,1的数量大致等于0的数量。同样,“10”、“01”、“00”、“11”的数字也大致相等。类似的标准被称为统计随机性。符合这样要求的数字乍一看是随机的。
条件2:密码安全的伪随机性。定义了给定随机样本的一部分和随机算法,随机样本的其余部分无法有效计算。
条件三:真随机性。它被定义为随机样本的不可再现性。实际上,只要给定边界条件,真随机数是不存在的,但如果生成真随机数样本的边界条件非常复杂,很难捕捉(比如计算机的局部背景辐射起伏值),则可以考虑用这种方法计算真随机数。
随机数分为三类:
①伪随机数:满足第一个条件的随机数。
②密码安全伪随机数:同时满足前两个条件的随机数。伪随机数发生器可以通过密码术来保护。
计算出来的。
③真随机数:同时满足三个条件的随机数。
如何用C语言生成一定范围内的随机数? 使用srand((unsigned int)(time(NULL))是一种方法,因为每次运行程序的时间都不一样。
C语言提供的随机数生成器的用法:现在C编译器提供了一个基于ANSI标准的伪随机数生成器函数来生成随机数。它们是rand()和srand()函数。这两个功能的工作过程如下:
1)首先给srand()提供一个种子,种子为无符号int类型,取值范围为0到65535;
2)然后调用rand(),它将根据提供给srand()的种子值返回一个随机数(0到32767之间)。
3)根据需要多次调用rand(),从而不断得到新的随机数;
4)随时可以为srand()提供新的种子,从而进一步“随机化”rand()的输出结果。
以下是0到32767之间的随机数程序:
#包含stdlib.h
#包含stdio.h
#include time.h //使用当前时钟作为种子。
无效总管(无效)
{ int I;
srand((无符号)时间(空));//初始化一个随机数
for(I = 0;i 10I) //打印出10个随机数。
printf("%d\n ",rand());
}
根据上面的过程,可以容易地获得0和1之间的随机数:
#包含stdlib.h
#包含stdio.h
#包含时间. h
int main()
{ int I;
srand((无符号)时间(空));
for(I = 0;i 10我)
printf("%5.2f\n ",rand()/32767.0);
}
并且生成1到100之间的随机数可以写成如下:
#包含stdlib.h
#包含stdio.h
#包含时间. h
int main()
{ int I;
srand((无符号)时间(空));
for(I = 0;i 10我)
printf("%d\n ",rand()0 1);
}
扩展数据:
高效的c语言编程技巧;
一:用空间换时间
计算机程序最大的矛盾是空间和时间的矛盾。所以,从这个角度来说,我们应该通过逆向思维来考虑程序的效率。
二:解决问题的数学方法
数学是计算机之母。没有数学的基础和底子,就没有计算机的发展。所以在编写程序时,采用一些数学方法,会使程序的执行效率提高一个数量级。
三:使用位操作
实现高效C语言编写的第三招——用位运算减少除法和取模运算。
在计算机程序中,数据的比特是可以运算的最小数据单位,理论上所有的运算和操作都可以通过“比特运算”来完成。一般的位操作是用来控制硬件或者做数据转换的,但是灵活的位操作可以有效的提高程序运行的效率。
参考来源:百度百科-C语言
C语言如何生成一定范围内的随机数? srand((int)time(NULL));设置随机数种子
rand()0;生成一个0-99的随机数。
高级,如果想生成一个16到59之间的数,可以这样写:rand()D 16(其中44是从59-16 ^ 1得到的)。其他情况也一样!
用rand()函数在C语言中生成20-90的随机整数。
20-90有71个数,所以是rand()q 20;
用rand()生成-20-20的随机数
-20-20有41个数,所以是兰德()A-20;
请注意,最好在运行上述代码之前设置以下内容:
srand(time(NULL));//用当前系统时间设置rand()随机序列种子,保证随机序列每次都不一样。
最后更新于 2023-10-14 04:32:56 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章