随机数表
随机生成的从0到9十个数字所组成的数表
随机数表也称乱数表,是由随机生成的从0到9十个数字所组成的数表,每个数字在表中出现的次数是大致相同的,它们出现在表上的顺序是随机的。
简介
随机数字表,是由 0~9 的数字随机排列(没有任何规律的)的表格,表中有各自独立的数字2500个,从左到右横排为行,从上至下竖排为列。 表格形式多种,用法也很多,使用时可根据研究对象总体所含的个体数来确定使用几位随机数字, 也就是可以根据需要把它当成任何数字来使用。而随机数表法,是用随机数字表代替签号或签筒的一种随机取样的方法。其优点有:一是简单可行,抽样前只需对研究对象进行顺序编号,然后根据随机抽出的编号与研究对象对号入座即可;二是能保证符合抽样的“随机化原则(所谓“随机化”原则,是指在抽样时使总体的每一个个体都有同等的机会被独立地抽到样本中来,即“机会均等”的原则。抽中与否全都是偶然的,使抽取的样本更具代表性。
内容
(以上只是部分)
意义
真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件噪音核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。
而通常我们使用的随机数表是使用伪随机数,这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。
采用随机号码表法抽取样本,完全排除主观挑选样本的可能性,使抽样调查有较强的科学性。
步骤
1、统一编号。即将总体中的所有研究对象进行统一编号,做成签。 如果研究对象是10以内的,只取1位数,则编号是 1~9;如果研究对象在 1~99 之间的,取 2 位数,则编号是 01~99;如果研究对象在 1~999 之间的,取 3 位数,则编号是 001~999;其他依次类推。 然后充分混合,目的是使各样本编号均匀分布,符合“机会均等 的原则。
2、确定行名。研究人员根据自己的需要或意愿,在表上任选一行数字,由该行数字决定起点行的数。如选择25 行,即从上往下第 25 行为起点行。 若选择的数大于 50,则用该数减去 50,将所得余数为起点行。 若选择0 或 00 行,则以第 50 行为起点行。
3、确定列名。 列名的确定方法与行名的确定方法相同。
4、录取号码。行名和列名决定后,就可以所选择的起始行数和起始列数的交叉点处的数为起始点, 然后, 按一定顺序方向(如自左向右或自右向左,从上往下或由下而上)进行依次录取号码,遇到大于总体的号码或重复的号码,应该舍去不要,直至录取到所抽取的样本数满额为止。 用上述方法所录取到的号码则是被随机抽中的样本。
用途
比如,对银行来说,银行的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。
编号为这些号码的居民家庭就是抽样调查的对象。
实际生活中,这些随机数表起着很大的作用,所以很多人会专门去寻找随机数表产生器。
程序
在C语言中,rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态分布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。初始化随机产生器即rand()函数的初始值,即使把种子的值改成a; 从这你可以看到通过srand()函数,我们是可以产生可以预见的随机序列。那我们如何才能产生不可预见的随机序列呢?我们可能常常需要这样的随机序列。利用srand((unsign)(time(NULL))是一种方法,因为每一次运行程序的时间是不同的。在C语言里所提供的随机数发生器的用法:现在的C编译器都提供了一个基于ANSI标准伪随机数发生器函数,用来生成随机数。它们就是rand()和srand()函数。这二个函数的工作过程如下:
1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
2) 然后调用rand(),它会根据提供给srand()的种
3) 根据需要多次调用rand(),从而不间断地得到新的随机数;
4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
下面是0~32767之间的随机数程序:
#include <stdlib.h>
#include <stdio.h>
#include //使用当前时钟做种子
void main( void )
{int i;
srand( (unsigned)time( NULL ) ); //初始化随机数
for( i = 0; i <10;i++ ) //打印出10个随机数
}
根据上面的程序可以很容易得到0~1之间的随机数:
#include
#include
#include
main( )
{int i;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 10;i++ )
}
而产生1~100之间的随机数可以这样写:
#include
#include
#include
main( )
{int i;
srand( (unsigned)time( NULL ) );
for( i = 0; i < 10;i++ )
}
__________________________________________________
include
#include
#include
void main()
{
int i;
srand((unsigned)time(NULL));
i = rand() % 100;
}
这样产生的随机数就是0-99之间的,
这二个函数的工作过程如下:
1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535;
2) 然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(在0到32767之间)
3) 根据需要多次调用rand(),从而不间断地得到新的随机数;
4) 无论什么时候,都可以给srand()提供一个新的种子,从而进一步“随机化”rand()的输出结果。
#include
#include
main
{
int i;
srand(time(0)); //初始化随机种子
i = rand(); //产生随机数
}
然后设一个变量,如j,j=rand(),就可以给j赋一个1~32767的随机数,如果要获得一个随机函数的十位(其它类似),只需令j=j/10就行. 添加头文件 #include 然后在文件中添加 srand((unsigned)time(NULL));
srand()是用来初始化随机种子数的,因为rand的内部实现是用线性同余法做的,它不是真的随机数,只不过是因为其周期特别长,所以有一定的范围里可看成是随机的. 上面是有个随机种子的说明及方法,为了避免重复.然后再 用 随机函数,rand() 就行了.头文件是stdlib.h
random() 产生随机数为 0或1
random(n) 产生随机数为 0到n之间的一个随机数
rand() 产生 0到32768之间的一个随机数
最新修订时间:2024-08-09 14:48
目录
概述
简介
内容
参考资料