標籤: 暫無標籤

1 隨機數表 -概念

  隨機數表:也稱亂數表,是由隨機生成的從0到9十個數字所組成的數表,每個數字在表中出現的次數是大致相同的,它們出現在表上的順序是隨機的

2 隨機數表 -內容

  

034743738636964736614699698162
977424676242811457204253323732
167602276656502671073290797853
125685992696966827310503729315
555956356438548246223162430990
162277943949544354821737932378
844217533157245506887704744767
630163785916955567199810507175
332112342978645607825242074428
576086324409472796544917460962
181807924644171658097983861962
266238977584160744998311463224
234240547482977777810745321408
623628199550922611970056763138
378594351283395008304234079688
702917121340332038261389510374
566218373596835087759712259347
994957227788429545721664361600
160815047233271434094559346849
311693324350278987192015370049
 (以上只是部分)

3 隨機數表 -意義

  隨機數表是統計工作者用計算機生成的隨機數組成,並保證表中每個位置上出現哪一個數字是

隨機數表隨機數表
等概率的,利用隨機數表抽取樣本保證了各個個體被抽取的概率相等。

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

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

  採用隨機號碼錶法抽取樣本,完全排除主觀挑選樣本的可能性,使抽樣調查有較強的科學性。

4 隨機數表 -用途

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

  再比如,要考察某公司的牛奶產品質量,想從800袋牛奶中抽取60袋,就可以在隨機數表中選中一數,並用向上、下、左、右不同的讀法組成60個數,並按牛奶的標號進行檢測,雖然麻煩,但很常用。

  詳細的舉一例:某企業要調查消費者對某產品的需求量,要從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。

  編號為這些號碼的居民家庭就是抽樣調查的對象。

  實際生活中,這些隨機數表起著很大的作用,所以很多人會專門去尋找隨機數表產生器。

5 隨機數表 -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 <stdlib.h>

  #include <stdio.h>

  #include <time.h> //使用當前時鐘做種子

  void main( void )

  {int i;

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

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

  printf( " %d\n", rand() );

  }

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

  #include <stdlib.h>

  #include <stdio.h>

  #include <time.h>

  main( )

  {int i;

  srand( (unsigned)time( NULL ) );

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

  printf( "%5.2f\n", rand()/32767.0);

  }

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

  #include <stdlib.h>

  #include <stdio.h>

  #include <time.h>

  main( )

  {int i;

  srand( (unsigned)time( NULL ) );

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

  printf( "%d\n", rand()%100+1);

  }

  __________________________________________________

  include <stdio.h>

  #include <stdlib.h>

  #include <time.h>

  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 <stdlib.h>

  #include <time.h>

  main

  {

  int i;

  srand(time(0)); //初始化隨機種子

  i = rand(); //產生隨機數

  }

  首先,加一個"#include<stdlib.h>

  然後設一個變數,如j,j=rand(),就可以給j賦一個1~32767的隨機數,如果要獲得一個隨機函數的十位(其它類似),只需令j=j%10就行. 添加頭文件 #include<time.h> 然後在文件中添加 srand((unsigned)time(NULL));

  srand()是用來初始化隨機種子數的,因為rand的內部實現是用線性同餘法做的,它不是真的隨機數,只不過是因為其周期特別長,所以有一定的範圍里可看成是隨機的. 上面是有個隨機種子的說明及方法,為了避免重複.然後再 用 隨機函數,rand() 就行了.頭文件是 stdlib.h

  random() 產生隨機數為 0或1

  random(n) 產生隨機數為 0到n之間的一個隨機數

  rand() 產生 0到32768之間的一個隨機數

上一篇[教育2.0時代]    下一篇 [北條君]

相關評論

同義詞:暫無同義詞