意義
随機數表是統計工作者用計算機生成的随機數組成,并保證表中每個位置上出現哪一個數字是等概率的,利用随機數表抽取樣本保證了各個個體被抽取的概率相等。
真正的随機數是使用物理現象産生的:比如擲錢币、骰子、轉輪、使用電子元件的噪音、核裂變等等。這樣的随機數發生器叫做物理性随機數發生器,它們的缺點是技術要求比較高。
而通常我們使用的随機數表是使用僞随機數,這些數列是“似乎”随機的數,實際上它們是通過一個固定的、可以重複的計算方法産生的。計算機或計算器産生的随機數有很長的周期性。它們不真正地随機,因為它們實際上是可以計算出來的,但是它們具有類似于随機數的統計特征。
采用随機号碼表法抽取樣本,完全排除主觀挑選樣本的可能性,使抽樣調查有較強的科學性。
用途
比如,對銀行來說,銀行的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之間的一個随機數



















