C語言實現RAND函式的方法
阿新 • • 發佈:2020-12-13
C語言使用rand()%一個值就可以實現生成一個偽隨機數供我們使用,那麼rand函式是如何實現的呢?我們自己可不可以編輯出來?其實是可以的,rand作為偽隨機數發生器產生的是一個偽隨機數,一般的用途能夠滿足。
要想實現這個函式,需要用一個公式,x=ax+b%65536用這樣的公式就可以簡單的實現隨機數了,至於為什麼是214013、2531011這兩個數應該是有個內部邏輯,數學上的驗證而來,這兩個數如果任意取可能效果不是很好。
static long holdrand = 1L;
void __cdecl srand (unsigned int seed)
{
holdrand = (long)seed;
}
int __cdecl rand (void)
{
return(((holdrand = holdrand * 214013L + 2531011L) >> 16) & 0x7fff);
}
定義完上面之後,在主函式中呼叫。
int main()
{
srand(GetTickCount());
int i;
i=rand()%100;
printf("%d",i);
}
這樣就可以簡單實現這個函數了。