随机数生成器
1. 随机数
2. 随机数生成
随机数 随机数表随机数表是人为的,为什么不可以自己生成一张,乱排几个数
随机数表是统计工作者用计算机生成的随机数组成,并保证表中每个位置上出现哪一个数字是等概率的,利用随机数表抽取样本保证了各个个体被抽取的概率相等. 真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等.这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高. 而通常我们使用的随机数表是使用伪随机数,这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的.计算机或计算器产生的随机数有很长的周期性.它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征. 采用随机号码表法抽取样本,完全排除主观挑选样本的可能性,使抽样调查有较强的科学性. 用途 比如,对银行来说,银行的ID和密码非常脆弱.如果有随机数表,就可以防备此类事件.随机数表是指为每个客户指定各不相同的数字列表,申请时将该随机数表分配给客户,而不是按照一定的规律给出,这就安全很多. 再比如,要考察某公司的牛奶产品质量,想从800袋牛奶中抽取60袋,就可以在随机数表中选中一数,并用向上、下、左、右不同的读法组成60个数,并按牛奶的标号进行检测,虽然麻烦,但很常用. 详细的举一例:某企业要调查消费者对某产品的需求量,要从95户居民家庭中抽选10户居民码表法抽选样本.具体步骤如下: 第一步:将95户居民家庭编号,每一户家庭一个编号,即01~95.(每户居民编号为2数) 第二步:在上面的表中,随机确定抽样的起点和抽样的顺序.假定从第一行,第5列开始抽,抽样顺序从左往右抽.(横的数列称“行”,纵的数列称为“列”) 第三步:依次抽出号码分别是:86、36、96、47、36、61、46、98、63、71,***10个号码.由于96、98两个号码不在总体编号范围内,应排除在外.再补充两个号码:62、74. 由此产生10个样本单位号码为:86、36、47、36、61、46、63、71、62、74. 编号为这些号码的居民家庭就是抽样调查的对象. 实际生活中,这些随机数表起着很大的作用,所以很多人会专门去寻找随机数表产生器.。
随机数函数如何使用
srand函数是随机数发生器的初始化函数,原型:
void srand(unsigned seed);
它需要提供一个种子,如:
srand(1);
直接使用1来初始化种子。
不过常常使用系统时间来初始化,即使用
time函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970
到现在所持续的秒数,然后将time_t型数据转化为(unsigned)型在传给srand函数,即:
srand((unsigned) time(&t));
还有一个经常用法,不需要定义time_t型t变量,即:
srand((unsigned) time(NULL));
直接传入一个空指针,因为你的程序中往往并不需要经过参数获得的t数据。
srand((int)getpid());
使用程序的ID(getpid())来作为初始化种子,在同一个程序中这个种子是固定的
随机输出十个0-100之间的整数
#include
#include
#include
void main( void )
{
int i,k;
srand( (unsigned)time( NULL ) );
for( i = 0; i
什么是随机数?
随机数就是计算机随机产生的数字序列。伪随机数序列看上去是随机的,但是反复执行程序会发现每次程序所产生的序列是重复的。可以用srand来避免出现伪随机数,他用unsigned类型的数据作参数并未函数rand设置随机数种子。
c代码:
#include<stdlib.h>
1.
i=rand();产生0到RAND_MAX(32767)之间的整数
2.
unsigned seed;
srand(seed);设置种子
i=rand();
真随机数的定义是什么
从软件的角度来说,如果是计算机起卦,则要用到随机数,而电脑中的随机数是假的随机数,搞那么多年程序,我还没看到过什么玩意能够有真随机数,按现代科学定义的真随机数的产生条件有起码两个:1、真随机数数列是不可预计的,因而也不可能重复产生两个相同的真随机数数列.2、真随机数只能用某些随机物理过程来产生.例如:放射性衰变、电子设备的热噪音、宇宙射线的触发时间等等.在计算机中,为了满足信息熵的特性,常常是用到的信息源包括用户的人为反应或某种经过排列变形后的高频时钟的序列或者是用户运动鼠标的路径的坐标等,这在一般的程序里据我看是很少触及到的.因此,计算机上的起卦方法先不谈真随机数的如何的处理问题,还有取到了数又该如何变化的问题.如果更深化的话,还需要要论及世界的本质之类的哲学命题,暂且不表.就目前起卦程序主要在网上起而言,关联于时间的起卦法也许还有可商议之处,而对随机要求性较强的起卦方法是很不适合的. 1. 如何产生一定范围内的随机数?直接的方法是: rand() % N;返回从 0 到 N - 1 的数字.但这个方法不好,因为许多随机数发生器的低位比特并不随机.一个较好的方法是: (int)((double)rand() / ((double)RAND_MAX + 1) * N);如果你不希望使用 double,另一个方法是: rand() / (RAND_MAX / N + 1);两种方法都需要知道 RAND_MAX,而且假设 N 要远远小于 RAND_MAX.ANSI 规定标准头文件 stdlib.h 中包含 RAND_MAX 的 #define.顺便提一下,RAND_MAX 是个常数,它告诉你 C 库函数 rand() 的固定范围.你不可以设 RAND_MAX 为其它的值,也没有办法要求 rand() 返回其它范围的值.如果你用的随机数发生器返回的是 0 到 1 的浮点值,要取得范围在 0 到 N - 1 内的整数,只要将随机数乘以 N 就可以了.2. 为什么每次执行程序,rand() 都返回相同顺序的数字? 你可以调用 srand() 来初始化伪随机数发生器的种子,传递给 srand() 的值应该是真正的随机数,例如当前时间: #include #include srand((unsigned int)time((time_t *)NULL));请注意,在一个程序执行中多次调用 srand() 并不见得有帮助!不要为了取得“真随机数”而在每次调用 rand() 前都调用 srand()!3. 我需要随机的真/假值,所以我用直接用 rand() % 2,可是我得到交替的 0, 1, 0, 1, 0 . 这是个低劣的伪随机数生成器,在低位比特中不随机!很不幸,某些系统就提供这样的伪随机数生成器.请试着使用高位比特,具体请参考本文第 1 点.。
c语言,如何产生随机数
1、第一步,先定义int一个数组和int一个指针变量。
2、接着我们选择让指针指向数组的第一元素的地址。
3、接着使循环的条件为指针的尾地址。
4、并且因为这段代码每次循环后指针+1。
5、最后,让他进行输出。
6、最后编译运行完成后,便可以看到运行结果。
随机数生成 如何用matlab生成随机数函数
rand(n):生成0到1之间的n阶随机数方阵 rand(m,n):生成0到1之间的m*n的随机数矩阵 (现成的函数)另外:Matlab随机数生成函数betarnd 贝塔分布的随机数生成器 binornd 二项分布的随机数生成器 chi2rnd 卡方分布的随机数生成器 exprnd 指数分布的随机数生成器 frnd f分布的随机数生成器 gamrnd 伽玛分布的随机数生成器 geornd 几何分布的随机数生成器 hygernd 超几何分布的随机数生成器 lognrnd 对数正态分布的随机数生成器 nbinrnd 负二项分布的随机数生成器 ncfrnd 非中心f分布的随机数生成器 nctrnd 非中心t分布的随机数生成器 ncx2rnd 非中心卡方分布的随机数生成器 normrnd 正态(高斯)分布的随机数生成器 poissrnd 泊松分布的随机数生成器 raylrnd 瑞利分布的随机数生成器 trnd 学生氏t分布的随机数生成器 unidrnd 离散均匀分布的随机数生成器 unifrnd 连续均匀分布的随机数生成器 weibrnd 威布尔分布的随机数生成器。
随机数生成的原理和方法
原理太高深,提供方法是可以的
1、
在C++中可以的,函数是这样用,比如0至1的随机数
Random ran=new Random();
int RandKey=ran.Next(0,1);
不过这样会有重复,可以给Random一个系统时间做为参数,以此产生随机数,就不会重复了
System.Random a=new Random(System.DateTime.Now.Millisecond);
int RandKey =a.Next(10);
2、
在EXCEL中也有相应的函数
RAND( )
注解
若要生成 a 与 b 之间的随机实数:
=RAND()*(b-a)+a
如果要使用函数 RAND 生成一随机数,并且使之不随单元格计算而改变,可以在编辑栏中输入“=RAND()”,保持编辑状态,然后按 F9,将公式永久性地改为随机数。
示例
RAND() 介于 0 到 1 之间的一个随机数(变量)
复制到其它单元格中就可以同时产生多个
c语言,如何产生随机数
1、第一步,先定义int一个数组和int一个指针变量。
2、接着我们选择让指针指向数组的第一元素的地址。
3、接着使循环的条件为指针的尾地址。
4、并且因为这段代码每次循环后指针+1。
5、最后,让他进行输出。
6、最后编译运行完成后,便可以看到运行结果。
c语言怎么生成随机数?
你好!
完整的代码,红圈处就是从上面100个数字中抽取到的数字:
#include <stdio.h>
#include<stdlib.h>; 生成随机数用
#include<time.h>; 利用时间生成种子
#include<math.h>
int main()
{
int i;
int a[100];
srand( time(NULL) ); 生成种子
for(i=0;i<100;i++)
{
a[i]=rand()%1000+1000; 生成一个小于1000的随机数
然后加1000,变成 1000 - 2000之间的数
printf("%d ",a[i]); 打印
}
i=rand()%100; 随机抽取其中的一个数
printf("\n抽取到的是:%d\n",a[i]);打印
return 0;
}
随机数表随机数表是人为的,为什么不可以自己生成一张,乱排几个数
随机数表是统计工作者用计算机生成的随机数组成,并保证表中每个位置上出现哪一个数字是等概率的,利用随机数表抽取样本保证了各个个体被抽取的概率相等. 真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等.这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高. 而通常我们使用的随机数表是使用伪随机数,这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的.计算机或计算器产生的随机数有很长的周期性.它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征. 采用随机号码表法抽取样本,完全排除主观挑选样本的可能性,使抽样调查有较强的科学性. 用途 比如,对银行来说,银行的ID和密码非常脆弱.如果有随机数表,就可以防备此类事件.随机数表是指为每个客户指定各不相同的数字列表,申请时将该随机数表分配给客户,而不是按照一定的规律给出,这就安全很多. 再比如,要考察某公司的牛奶产品质量,想从800袋牛奶中抽取60袋,就可以在随机数表中选中一数,并用向上、下、左、右不同的读法组成60个数,并按牛奶的标号进行检测,虽然麻烦,但很常用. 详细的举一例:某企业要调查消费者对某产品的需求量,要从95户居民家庭中抽选10户居民码表法抽选样本.具体步骤如下: 第一步:将95户居民家庭编号,每一户家庭一个编号,即01~95.(每户居民编号为2数) 第二步:在上面的表中,随机确定抽样的起点和抽样的顺序.假定从第一行,第5列开始抽,抽样顺序从左往右抽.(横的数列称“行”,纵的数列称为“列”) 第三步:依次抽出号码分别是:86、36、96、47、36、61、46、98、63、71,***10个号码.由于96、98两个号码不在总体编号范围内,应排除在外.再补充两个号码:62、74. 由此产生10个样本单位号码为:86、36、47、36、61、46、63、71、62、74. 编号为这些号码的居民家庭就是抽样调查的对象. 实际生活中,这些随机数表起着很大的作用,所以很多人会专门去寻找随机数表产生器.。