2016-12-30 52 views
1

例如,值1和10之間的隨機數,並且是更可能是7.有沒有一種簡單的方法來控制C中的隨機數的值,用百分比或什麼?

+1

我認爲這很難做到,特別是要求*和價值更可能是7 *。問題是如何定義*隨機*然後?它肯定不再統一。 – Elyasin

+2

看看http://stackoverflow.com/questions/1761626/weighted-random-numbers – Joe

+0

如果你想預測下一個「隨機」值,你可以使用一個僞隨機數發生器_帶有已知的seed_。 – ForceBru

回答

6

你可以做類似從陣列1-10其中7出現

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

int main(int argc, char *argv[]) 
{ 
    // note that 7 appears twice 
    int data[11] = { 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10 }; 
    int i; 

    srand((unsigned)time(NULL)); 
    for(i = 0; i < 100; i++) 
     printf("%d\n", data[rand()%11]); 

    return 0; 
} 
兩次拉動的隨機值

的(排序)輸出我從這次得到的是:

1 
1 
1 
1 
1 
1 
1 
1 
2 
2 
2 
2 
2 
2 
2 
2 
2 
3 
3 
3 
3 
3 
3 
3 
3 
3 
4 
4 
4 
4 
4 
4 
4 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
5 
6 
6 
6 
6 
6 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
7 
8 
8 
8 
8 
8 
8 
8 
8 
9 
9 
9 
9 
9 
9 
9 
9 
9 
10 
10 
10 
10 
10 
10 
10 
10 
10 
10 
10 
10 
10 

注意,7出現的頻率比其他任何數(約兩倍頻繁)。爲了增加頻率,在陣列中放置更多的7。

相關問題