當前位置:首頁 » 編程語言 » c語言真隨機
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言真隨機

發布時間: 2023-01-04 15:54:51

① 如何用c語言生成真正的隨機數

以使用C語言標准庫中的srand()和rand()來生成隨機數,同時要生成1~99之間的隨機數

② C語言隨機產生隨機數


寫了一段代碼,調試通過了,你自己閱讀一下。
#include<stdlib.h>
#include<time.h>
#include<stdio.h>

floatfloatRand(floatM,floatN)
{
return(rand()*1.0/RAND_MAX)*(N-M)+M;
}
voidmain()
{
srand((unsigned)time(0));//調用該語句可以保證後面的真隨機
for(inti=0;i<=10;i++)
{
printf("%f ",floatRand(12.0,147.5));
}
}

③ c語言,如何產生隨機數

具體代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h> //用到了time函數
int main()
{ int i,number;
srand((unsigned) time(NULL)); //用時間做種,每次產生隨機數不一樣
for (i=0; i<50; i++)
{
number = rand() % 101; //產生0-100的隨機數
printf("%d ", number);
}
return 0;
}
有以下幾種情況:
(1) 如果你只要產生隨機數而不需要設定范圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 范圍在0至RAND_MAX 間。RAND_MAX定義在stdlib.h, 其值為2147483647。

(2) 如果你要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數:
例如:
rand()%100是產生0-99的隨機數。

(3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次運行的時候輸出結果仍和第一次一樣。這與srand()函數有關。srand()用來設置rand()產生隨機數時的隨機數種子。在調用rand()函數產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在調用時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設置隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。
srand()函數定義 : void srand (unsigned int seed);
通常可以利用geypid()或time(0)的返回值來當做seed。如果你用time(0)的話,要加入頭文件#include<time.h>

④ 如何用C語言生成真正的隨機數

先使用srand函數以當前時間做一個種子,然後再隨機

如:

#include<time.h>//用到了time函數
#include<stdlib.h>
#include<stdio.h>

intmain()
{
inti,number;
srand((unsignedint)time(NULL));//用時間做種,每次產生隨機數不一樣
for(i=0;i<10;i++)//產生10個隨機數
{
number=rand()%12+1;//產生1-13的隨機數
printf("%d ",number);
}
return0;
}

⑤ c語言隨機函數怎麼用,怎麼定義

隨機函數就是產生數的函數,c語言里有rand(),srand()等函數。
用法
#include
#include
#include
void main( void )
{
int i,k;
srand( (unsigned)time( NULL ) ); //用系統時間當種子,對隨機函數進行初始化
for( i = 0; i < 10;i++ )
{
k=rand()%100; //產生各個隨機數
printf( " k=%d/n", k );
}
}
詳述
rand() srand() 頭文件為#include
標准C庫中函數rand()可以生成0~RAND_MAX之間的一個隨機數,其中RAND_MAX 是stdlib.h 中定義的一個整數,它與系統有關。
rand()函數沒有輸入參數,直接通過表達式rand()來引用,rand()%n是產生的隨機數對n取余,起到了取0到n-1之間隨機數的作用;
例如可以用下面的語句來列印兩個隨機數: printf("Random numbers are: %i %i/n",rand(),rand());
因為rand()函數是按指定的順序來產生整數,而未指定運行的種子,所以rand()每次使用的都是同一個種子來產生隨機數序列,因此每次執行上面的語句都列印相同的兩個值,所以說C語言的隨機並不是正真意義上的隨機。
為了時程序在每次執行時都能生成一個新序列的隨機值,我們通常通過為隨機數生成器提供一粒新的隨機種子。函數 srand()(來自stdlib.h)可以為隨機數生成器播散種子。只要種子不同rand()函數就會產生不同的隨機數序列。srand()稱為隨機數生成器的初始化器。
srand( (unsigned)time( NULL ) ); 用系統時間當種子,對隨機函數進行初始化,每次的系統時間不同,所以種子也就不同,產生的隨機數序列也就不同。

⑥ C語言如何編程產生隨機數

1、首先打開Visual stdio 2019,依次點擊文件,新建,項目新建以一個空白的項目:

⑦ c語言中能否產生真正的隨機數,如果可以的話,語句是什麼謝謝!

這是數學問題了。
可以理解的是,計算機作為通用圖靈機,只能儲存有限個狀態,在穩定運行的情況下,對於確定的輸入,輸出是確定的,無法實現「真正」的隨機性。
但是,日常情況下,需要隨機數時,可以用計算機實現。理由是計算機儲存的狀態是一個不確定的大的整數,利用某種偽隨機數演算法可以使輸入和輸出的關聯性被隱藏。這時候,盡管隨機數不是「真正」的,但是對於使用者來說,和「真正」的隨機數看上去並沒有什麼區別。
C語言庫函數提供偽隨機數演算法封裝的庫函數srand()/rand(),隨機性並不強。只要能自己表達出硬體無關(例如要求用量子計算機實現的就不算)的隨機性足夠強的演算法,C語言都可以實現。至於需要多少隨機性,是否實用,就不是設計者能夠完全決定的了。
====
[原創回答團]

⑧ c語言中如何生成1個0到1的隨機數

C語言中生成1個0到1的隨機數可以執行語句:float b=rand()/(RAND_MAX+1.0);

解析:

標准C庫中函數rand()可以生成0~RAND_MAX之間的一個隨機數,其中RAND_MAX 是stdlib.h 中定義的一個整數,它與系統有關。rand()函數沒有輸入參數,直接通過表達式rand()來引用;

用函數rand取得的隨機數除以(RAND_MAX+1.0),即可確保得到的結果在0到1之間。ISO IEC 9899 2011 (C11)標准中未規定 RAND_MAX 的具體數值。但該標准規定了RAND_MAX 的值應至少為32767。編程的時候,不應該對 RAND_MAX 的具體數值做任何假設。

(8)c語言真隨機擴展閱讀:

相關說明:

1、因為rand()函數是按指定的順序來產生整數,因此每次執行上面的語句都列印相同的兩個值,所以說C語言的隨機並不是真正意義上的隨機。

2、為了使程序在每次執行時都能生成一個新序列的隨機值,我們通常通過為隨機數生成器提供一粒新的隨機種子。函數 srand()(來自stdlib.h)可以為隨機數生成器播散種子。只要種子不同rand()函數就會產生不同的隨機數序列。srand()稱為隨機數生成器的初始化器。

3、隨機種子(Random Seed)是計算機專業術語,一種以隨機數作為對象的以真隨機數(種子)為初始條件的隨機數。一般計算機的隨機數都是偽隨機數,以一個真隨機數(種子)作為初始條件,然後用一定的演算法不停迭代產生隨機數。

⑨ C語言隨機函數

rand
和random都是偽隨機函數,一般直接讀取時間來做種子(sand(time))的也是不怎能隨機的
我給你一個我以前寫的,真正的隨機:
int
myrand(void)
{
int
seed
;

asm
("rdtsc"
:
"=A"
(seed))
;

srand((unsigned
int)seed);

return
rand();
}

⑩ 怎樣讓c語言中的隨機函數真正隨機

一般就是採用設置種子的方式 實現真隨機
種子往往是由當前時間
比如
srand(time(NULL));
計算機語言中,很難做到真正的隨機。