哈喽 , 各位网友 , 因为本文的核心知识点是c语言随机数生成和c语言随机数生成1~10 , 所以小编非常认真地搜集了关于c语言随机数生成的相关资料 , 并且井井有条地做了汇总 , 希望小编的辛苦付出能够让网友们找到自己想要的资料 。
本文目录一览:
- 1、怎么用C语言生成随机数
- 2、C语言怎样产生一定范围的随机数?
- 3、C语言如何生成随机数
- 4、C语言中产生随机数
- 5、怎样用C语言生成一个随机数x,使得10≤x≤50?
#includestdio.h
#includetime.h
#includestdlib.h
void main() { int a,b,x;
a=20; b=100;
srand((unsigned int)time(NULL)); //用当前时间生成一个随机数种子
x=rand()%(b-a+1)+a;
printf("得到一个随机数:%d\n",x);
}

文章插图
C语言怎样产生一定范围的随机数?srand((int)time(NULL));设定随机数种子
rand()%100;产生0-99的随机数 。 高级点的 , 假如要产生16-59之间的数 , 你可以这样写:rand()%44+16(这里44由59-16+1得到) 。 其他情况如法炮制!
下面是搜回来的:
问题1: 怎样获得一个真正的随机数?要知道 , rand()是不能产生真正的随机数的!即使不能产生真正的随机数 , 也要大概接近呀!而rand()好象每次的随机都一样 。
专家解答:
之所以rand()每次的随机数都一样是因为rand()函数使用不正确 。 各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值 , 当序列足够长 , 这组数值近似满足均匀分布 。 如果计算伪随机序列的初始数值(称为种子)相同 , 则计算出来的伪随机序列就是完全相同的 。 这个特性被有的软件利用于加密和解密 。 加密时 , 可以用某个种子数生成一个伪随机序列并对数据进行处理;解密时 , 再利用种子数生成一个伪随机序列并对加密数据进行还原 。 这样 , 对于不知道种子数的人要想解密就需要多费些事了 。 当然 , 这种完全相同的序列对于你来说是非常糟糕的 。 要解决这个问题 , 需要在每次产生随机序列前 , 先指定不同的种子 , 这样计算出来的随机序列就不会完全相同了 。 你可以在调用rand()函数之前调用srand( (unsigned)time( NULL ) ) , 这样以time函数值(即当前时间)作为种子数 , 因为两次调用rand函数的时间通常是不同的 , 这样就可以保证随机性了 。 你也可以使用srand函数来人为指定种子数 。 Windows 9x/NT的游戏FreeCell就允许用户指定种子数 , 这样用户如果一次游戏没有成功 , 下次还可以以同样的发牌结果再玩一次 。
问题2: 我按照上述方法并不能产生随机数 , 仅产生公差为3或4的等差数列:
#include stdlib.h
#include iostream.h
#include conio.h
#include time.h
void main()
{
for(int i=0;i100000;i++)
{
srand( (unsigned)time( NULL ) );
coutrand()endl;
}
}
专家解答:
你的程序是有问题的 , 你每产生一个随机数之前 , 都调用一次srand , 而由于计算机运行很快 , 所以你每次用time得到的时间都是一样的(time的时间精度较低 , 只有55ms) 。 这样相当于使用同一个种子产生随机序列 , 所以产生的随机数总是相同的 。 你应该把srand放在循环外:
- c语言教程电子书-c语言入门电子书下载
- logo自动生成-logo自动生成器免费
- 在线条码生成器-在线条形码生成器
- 贪吃蛇c语言代码-贪吃蛇c语言代码500行
- 在线logo制作-logo在线设计生成器免费
- ico图标在线生成「生成ico图标工具」
- 免费logo生成器「免费logo生成器有哪些」
- 要我怎么说-要我怎么说我不知道太多的语言消失在胸口
- 淘宝订阅天猫榜单自动化供给规则,怎么生成?
- 情人节语言「情人节语言网络用语」
特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
