搜索
查看: 1937|回复: 8
打印 上一主题 下一主题

随机数代码是什么

[复制链接]
跳转到指定楼层
楼主
发表于 2013-9-14 13:43:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
随机数代码是啥{:soso_e132:}{:soso_e132:}

最佳答案

查看完整内容

首先说明,C语言没有产生随机数的函数(实际上现有的所有计算机都不能产生真正意义上的随机数),只有产生伪随机数的函数int rand(),函数声明位于 (_CRTIMP int __cdecl __MINGW_NOTHROW rand(void);) 该函数用于产生一个0~RAND_MAX的伪随机整数 用生成的数+%运算符即可生成一定范围内的伪随机整数 (例如int a=rand()%256) 用生成的数/(double)RAND_MAX即可生成0~1范围内的伪随机浮点数 (例如double a=rand()/(double) ...
沙发
发表于 2013-9-14 13:43:44 | 只看该作者
本帖最后由 981013 于 2013-9-15 13:10 编辑

首先说明,C语言没有产生随机数的函数(实际上现有的所有计算机都不能产生真正意义上的随机数),只有产生伪随机数的函数int rand(),函数声明位于<stdlib.h>
(_CRTIMP int __cdecl __MINGW_NOTHROW rand(void);)
该函数用于产生一个0~RAND_MAX的伪随机整数
用生成的数+%运算符即可生成一定范围内的伪随机整数
(例如int a=rand()%256)
用生成的数/(double)RAND_MAX即可生成0~1范围内的伪随机浮点数
(例如double a=rand()/(double)RAND_MAX)
若不调用srand(unsigned int)为伪随机数函数提供种子,则每次生成的值都是相同的
(不提供种子时自动调用srand(1))
随种子不同生成的值也不同
因为时间不断变化,因此一般用(unsigned)time(0)做种子
请访问http://baike.baidu.com/view/5876059.htm以获得更多有关rand()的信息
访问http://baike.baidu.com/view/1127.htm#1以获得关于伪随机数的信息
若有一定基础,请阅读本帖http://bbs.ahalei.com/thread-2157-1-1.html
板凳
发表于 2013-9-14 18:13:15 | 只看该作者
#include <time.h>
#include <stdlib.h>
srand(time(NULL));
rand();
地板
发表于 2013-9-14 18:53:00 | 只看该作者
{:soso__16865118374220378461_1:}随机数都是坑!我发现的随机数的取值没有是真正意义上的随机!
5#
发表于 2013-9-15 17:06:13 | 只看该作者
981013 发表于 2013-9-15 12:59
首先说明,C语言没有产生随机数的函数(实际上现有的所有计算机都不能产生真正意义上的随机数),只有产生伪 ...

准确的说法是,没有特殊硬件的计算机不能产生最严格意义上的随机数

从应用的角度来说,只要不是严重的误操作或是libc实现太烂,说rand产生的数列是随机数列没什么问题
6#
发表于 2013-10-9 11:03:41 | 只看该作者
努力的刷帖升级哈哈
7#
发表于 2013-10-9 11:07:25 | 只看该作者
rand();只能产生一个固定数,要想得到随机数,还得在rand();的前一行加上srand((unsigned)time(NULL));
准确的说法是,没有特殊硬件的计算机不能产生最严格意义上的随机数

从应用的角度来说,只要不是严重的误操作或是libc实现太烂,说rand产生的数列是随机数列没什么问题
8#
发表于 2013-10-9 11:08:28 | 只看该作者
这个rand()是没什么问题,但是它不可以环套
9#
发表于 2015-6-30 06:13:27 | 只看该作者
嗯,不然都一样
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表