1
例如,值1和10之間的隨機數,並且是更可能是7.有沒有一種簡單的方法來控制C中的隨機數的值,用百分比或什麼?
例如,值1和10之間的隨機數,並且是更可能是7.有沒有一種簡單的方法來控制C中的隨機數的值,用百分比或什麼?
你可以做類似從陣列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。
我認爲這很難做到,特別是要求*和價值更可能是7 *。問題是如何定義*隨機*然後?它肯定不再統一。 – Elyasin
看看http://stackoverflow.com/questions/1761626/weighted-random-numbers – Joe
如果你想預測下一個「隨機」值,你可以使用一個僞隨機數發生器_帶有已知的seed_。 – ForceBru