-
抽 6 張牌,總共 4 6 4096 種可能性。
讓我們來看看有多少機會中彩票。
如果中了彩票,那麼四張牌的模式只能是:
對於每種模式,我們還將數字分為 4 張牌。
第一種模式有 4 個!/(3!有 4 種分配方式,每種方式有 6 種!/(3!120種獲勝可能性。
第二種模式有4個!/(2!*2!有 6 種分配方式,每種方式有 6 種!/(2!*2!180種獲勝可能性。
所以總共有4*120+6*180 1560種中獎可能性。
所以獲勝的概率大約是:1560 4096。
P.S. C++模擬程式,結果非常接近!
int main()
int n = 1000000; //test countint c = 0;
for ( int i = 0; i < n; i++int a[4] = ;
for ( int k = 0; k < 6; k++a[rand() 4]++
bool good = true;
for ( int k = 0; k < 4; k++if ( a[k] == 0 )
good = false;
break;
if ( good )
c++;cout <
-
生成作用域內的隨機數。 使用 if 語句輸出具有不同隨機數或隨機數範圍的相應問題。
-
例如,現在有 100 個問題,必須抽出 10 個問題。
首先,建立乙個問題的索引陣列,idxarr =
然後使用隨機數生成函式 rand() 生成乙個從 0 到 99 的隨機數,並將索引陣列中索引的值與陣列中的最後乙個值交換,例如,如果生成的隨機數為 2,則將索引陣列更改為 idxarr=
然後生成乙個從 0 到 98 的隨機數,並將索引陣列中索引的值與陣列中的倒數第二個值交換,例如,這次生成的隨機數為 4,然後將索引陣列修改為 idxarr=
等等。 執行 10 次,最終索引陣列中的最後 10 個值是抽取問題的索引號。
如果有什麼不明白的地方,可以再問我。
-
源程式**和演算法解釋如下
生成 1-10 個隨機數程式:
#include
#include
using namespace std;
int main()
定義要儲存的隨機數陣列。
srand((unsigned)time(null));初始化隨機函式。
number[0] = rand() n;第乙個隨機數不需要比較。
cout
if (j == (i - 1)) 如果遍歷完成,則彈出。
break;
j++;cout
程式結果如下:
-
C 語言有自己的隨機數函式 rand()。
原型是: int rand();
該函式是獲取乙個隨機整數。
標頭檔案是。
可以編寫乙個提取 10 個隨機數並輸出它們的程式。
#include
#include
int main()
在應用程式中,所需的隨機數通常是乙個範圍,例如,當您要隨機生成一組有效的整數分數時,實際上需要生成一組 [0,100] 隨機整數。 這可以通過取餘數(模除法)來實現。
對於 a%b 的值,結果範圍介於 [0,b-1] 之間。 根據這個原理,如果想得到乙個[a,b]範圍內的隨機整數,可以先找到[0,b-a]範圍內的隨機數,然後在結果中加a。
即 rand()%b-a+1) +a
因此,在前面**的基礎上,可以編寫提取10個隨機數的程式,其值在[0,100]範圍內。
#include
#include
int main()
值得注意的是,C提供的蘭德函式是乙個偽隨機數,如果不做其他事情,則每次執行程式時得到的隨機數序列。 為了解決這個問題,C 語言還定義了 srand 庫函式,用於為隨機數提供種子以獲得不確定的隨機初始值。
srand 需要乙個 int 引數,該引數更常用於 time(null) 來獲取當前的微秒數。
所以有乙個完整的操作來設定隨機數種子。
srand(time(null));
需要引入時間函式來宣告。
srand 函式需要在第一次呼叫 rand 之前呼叫,以便最終將 [0,100] 之間的 10 個隨機整數輸出的程式修改為。
#include
#include
include 新增 time 函式的標頭檔案。
int main()
-
這可以通過標準 C 來實現。
標頭檔案中包含了兩個需要使用的函式,分別是 void rand ( unsigned int seed ); 設定隨機化種子。
int rand ( void );生成乙個介於 0 和 rand max 之間的隨機數,其中 rand max 是定義的數字。
事實上,這兩個函式的實現都會產生假的隨機數,所以隨機性的真實實現也需要使用函式 time()。
生成乙個介於 0-9 之間的隨機數。
#include
#include
#include
int random()
-
這是乙個**,你看。
int x,y,i,t;
int a[100];
for(i=0;i<100;i++)
a[i]=i+1;
for(i=0;i<100;我++)這裡的子交易所越多,A就越混亂。
while(x!=y);
t=a[x];交換下標 A xy 對應的資料。
a[x]=a[y];
a[y]=t;
最後,刪除與 a[0] 和 a[9] 對應的問題。
其餘的應該不難。
-
使用 int rand() 函式生成乙個隨機數,然後根據隨機數讀取問題編號。
-
int c;
c=rand()%90+10;
rand() 是介於 0 和 32767 之間的隨機數。
90 將隨機生成數字 0-89,+10 將變為 10-99。
-
檔案--- 建立乙個新的---專案---選擇要建立工程文件的專案,然後建立乙個工作專案。
簡單地說,使用 srand(unsigned int
該函式設定種子,然後使用 rand() 返回乙個隨機數。 c C++ 中的隨機數不是真隨機數,而是偽隨機數。 >>>More