随機數表

随機數表

由随機生成的從0到9十個數字所組成的數表
随機數表:也稱亂數表,是由随機生成的從0到9十個數字所組成的數表,每個數字在表中出現的次數是大緻相同的,它們出現在表上的順序是随機的。随機數表是指為每個客戶指定各不相同的數字列表,申請時将該随機數表分配給客戶,而不是按照一定的規律給出,這就安全很多。再比如,要考察某公司的牛奶産品質量,想從800袋牛奶中抽取60袋,就可以在随機數表中選中一數,并用向上、下、左、右不同的讀法組成60個數,并按牛奶的标号進行檢測,雖然麻煩,但很常用。詳細的舉一例:某企業要調查消費者對某産品的需求量,要從95戶居民家庭中抽選10戶居民碼表法抽選樣本。
    中文名:随機數表 外文名:random number table 适用領域: 所屬學科: 也稱:亂數表 出現:在表上的順序是随機的 采用:随機号碼表法抽取樣本 意義:非主觀

意義

随機數表是統計工作者用計算機生成的随機數組成,并保證表中每個位置上出現哪一個數字是等概率的,利用随機數表抽取樣本保證了各個個體被抽取的概率相等。

真正的随機數是使用物理現象産生的:比如擲錢币、骰子、轉輪、使用電子元件的噪音、核裂變等等。這樣的随機數發生器叫做物理性随機數發生器,它們的缺點是技術要求比較高。

而通常我們使用的随機數表是使用僞随機數,這些數列是“似乎”随機的數,實際上它們是通過一個固定的、可以重複的計算方法産生的。計算機或計算器産生的随機數有很長的周期性。它們不真正地随機,因為它們實際上是可以計算出來的,但是它們具有類似于随機數的統計特征。

采用随機号碼表法抽取樣本,完全排除主觀挑選樣本的可能性,使抽樣調查有較強的科學性。

用途

比如,對銀行來說,銀行的ID和密碼非常脆弱。如果有随機數表,就可以防備此類事件。随機數表是指為每個客戶指定各不相同的數字列表,申請時将該随機數表分配給客戶,而不是按照一定的規律給出,這就安全很多。

詳細的舉一例:某企業要調查消費者對某産品的需求量,要從95戶居民家庭中抽選10戶居民碼表法抽選樣本。具體步驟如下:第一步:将95戶居民家庭編号,每一戶家庭一個編号,即01~95。(每戶居民編号為2數)

第二步:在上面的表中,随機确定抽樣的起點和抽樣的順序。假定從第一行,第9列開始抽,抽樣順序從左往右抽。(橫的數列稱“行”,縱的數列稱為“列”)

第三步:依次抽出号碼分别是: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語言編程産生

在C語言中,rand()函數可以用來産生随機數,但是這不是真真意義上的随機數,是一個僞随機數,是根據一個數,我們可以稱它為種子,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正态分布,從而相當于産生了随機數,但這不是真正的随機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值,C提供了srand()函數,它的原形是void srand(int a)。

初始化随機産生器既rand()函數的初始值,即使把種子的值改成a;從這你可以看到通過sand()函數,我們是可以産生可以預見的随機序列,那我們如何才能産生不可預見的随機序列呢?我們可能常常需要這樣的随機序列。利用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

#include

#include/使用當前時鐘做種子

void main(void)

{int i;

srand((unsigned)time(NULL));//初始化随機數

for(i=0;i<10;i++)/打印出10個随機數

printf("%dn",rand());

}

根據上面的程序可以很容易得到0~1之間的随機數:

#include

#include

#include

main()

{int i;

srand((unsigned)time(NULL));

for(i=0;i<10;i++)

printf("%5.2fn",rand()/32767.0);

}

而産生1~100之間的随機數可以這樣寫:

#include

#include

#include

main()

{int i;

srand((unsigned)time(NULL));

for(i=0;i<10;i++)

printf("%dn",rand()%100+1);

}

__________________________________________________

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();//産生随機數

}

首先,加一個"#include

然後設一個變量,如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之間的一個随機數

相關詞條

相關搜索

其它詞條