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

c語言產生隨機數

發布時間: 2022-01-14 16:05:33

1. 如何用c語言產生隨機數,隨機數的加和是一確定的數

思路:
1
先獲取到加和值;
2
輸入加和值范圍內的一個隨機數;
3
用加和值減去獲取到的隨機數,這樣就得到了另外一個數;
4
循環執行,直到獲取到符合要求數量的數值為止。
以獲取10組數值為例,代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int s;
int i,n;
srand(time(NULL));//設置隨機數種子。
scanf("%d",&s);//輸入加和值。
for(i = 0; i < 10; i ++)//獲取10組要求的數值。
{
n = rand()%s;//獲取一個0~s-1的隨機數。
printf("%d+%d=%d\n", n, s-n, s);//輸出結果。
}

return 0;
}

2. c語言 關於產生隨機數

/**
*編譯器:vs2010
*時間:2017年11月7日
*@fencaide
*/

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

intmain(void)
{
intanswer=0;

for(inti=0;i<10;i++){
srand((unsigned)time(NULL));
answer=rand()%9000;
printf("%d ",answer);
Sleep(2000);
}

getchar();
getchar();
return0;
}

人家的隨機是相對於這個種子的情況下,不同的種子產生的結果當然不具備隨機性,而且偽隨機不是真隨機。也就是對於一個種子多次rand是具備「隨機性」的,而因為是偽隨機,多個種子多次隨機自然不是隨機的,下面這段話我 別人的哈

  • rand函數產生的並不是真意正義上的隨機數,是一個偽隨機數,是根據一個數,我們可以稱它為種子,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數,但這不是真正的隨機數

3. 怎麼用C語言生成隨機數

假設要生成的隨機數是大於等於20且小於等於100的整數

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
voidmain(){inta,b,x;
a=20;b=100;
srand((unsignedint)time(NULL));//用當前時間生成一個隨機數種子
x=rand()%(b-a+1)+a;
printf("得到一個隨機數:%d ",x);
}

4. C語言:產生隨機數 求高手指導!!!

我這里給出M,N是double
的通用程序。(m
<
n
).
隨機數也是double,你若要整數自己取整。
指數分布,假定指數分布函數曲線是:
f(x)=LAM
*
exp(-LAM*x);
LAM

指數分布函數
參數。你要自己給定,我這里給了1.2。
#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
//
別忘了

time.h
#include
<math.h>
//
別忘了

math.h
//
均勻分布的隨機數
double
rd_MN1(double
m,double
n)
{
double
r;
if
(m>n)
{r=n;n=m;m=r;};
r
=
(
(double)rand()
/
((double)(RAND_MAX)+(double)(1))
);
r
=
m
+
r
*
(n-m);
return
r;
}
void
main()
{
long
int
i,k;
double
m,n;
double
x,
r;
double
y;
double
LAM=1.2;
//f(x)=LAM*exp(-LAM*x);
m=2.0;
n=5.0;
srand((unsigned)time(NULL));
//
隨機種子
for
(i=0;i<50;i++)
printf("%lf
",
rd_MN1(m,n));
printf("\n==========\n");
srand((unsigned)time(NULL));
k=0;
loop:
r
=
(
(double)rand()
/
((double)(RAND_MAX)+(double)(1))
);
y
=
-log(r)
/
LAM;
if
(y
>=
m
&&
y
<=
n)
{printf("%lf
",y);
k++;};
if
(k
<
50)
goto
loop;
//
產生50個指數分布隨機數
}

5. C語言中產生隨機數

隨機數主要有兩個函數
一個種子產生函數
void
srand(int);
一個隨機數產生函數
int
rand();
當我們要產生隨機數的時候,首先我們生成一個隨機數種子(注意相同的種子產生的隨機數序列是一樣的)
然後使用rand()函數得到隨機數
祝你好運

6. 如何用c語言產生一定范圍內的隨機數

利用srand((unsigned int)(time(NULL))是一種方法,因為每一次運行程序的時間是不同的。

在C語言里所提供的隨機數發生器的用法:現在的C編譯器都提供了一個基於ANSI標準的偽隨機數發生器函數,用來生成隨機數。它們就是rand()和srand()函數。這二個函數的工作過程如下:

1) 首先給srand()提供一個種子,它是一個unsigned int類型,其取值范圍從0~65535;

2) 然後調用rand(),它會根據提供給srand()的種子值返回一個隨機數(在0到32767之間)

3) 根據需要多次調用rand(),從而不間斷地得到新的隨機數;

4) 無論什麼時候,都可以給srand()提供一個新的種子,從而進一步「隨機化」rand()的輸出結果。

下面是0~32767之間的隨機數程序:

#include <stdlib.h>

#include <stdio.h>

#include <time.h> // 使用當前時鍾做種子

void main(void)

{int i;

srand((unsigned)time( NULL ) ); // 初始化隨機數

for(i = 0; i < 10;i++) // 列印出 10 個隨機數

printf("%d ", rand() );

}

根據上面的程序可以很容易得到0~1之間的隨機數:

#include <stdlib.h>

#include <stdio.h>

#include <time.h>

int main( )

{int i;

srand((unsigned)time( NULL ) );

for(i = 0; i < 10;i++)

printf("%5.2f ", rand()/32767.0);

}

而產生1~100之間的隨機數可以這樣寫:

#include <stdlib.h>

#include <stdio.h>

#include <time.h>

int main( )

{int i;

srand((unsigned)time( NULL ) );

for(i = 0; i < 10;i++)

printf("%d ", rand()%100+1);

}

(6)c語言產生隨機數擴展閱讀:

C語言高效編程技巧:

一:以空間換時間

計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率問題

二:數學方法解決問題

數學是計算機之母,沒有數學的依據和基礎,就沒有計算機發展,所以在編寫程序的時候,採用一些數學方法會對程序的執行效率有數量級的提高。

三:使用位操作

實現高效的C語言編寫的第三招----使用位操作,減少除法和取模的運算。

在計算機程序中,數據的位是可以操作的最小數據單位,理論上可以用「位運算」來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做數據變換使用,但是,靈活的位操作可以有效提高程序運行的效率。

7. C語言中怎樣生成隨機數

C語言生成
隨機數

函數
為rand。
1
聲明:
int
rand(void);
2
頭文件:
stdlib.h
3
功能:
獲取一個非負隨機
數值

4
注意事項:
a)
rand是
偽隨機數
,由一個種子計算得來。
如果種子相同,每次啟動
程序
,獲取到的
隨機序列
是固定的。
可以通過srand設置當前時間作為種子,使隨機效果更好。
srand(time(NULL));
b)
要獲取[m,n]范圍的隨機數,可以使用代碼
rand()%(n-m+1)+m

8. c語言,如何產生隨機數

1、第一步,先定義int一個數組和int一個指針變數。

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

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

10. c語言產生一個隨機數

rand是根據一個種子來產生隨機數的,在沒設置的情況下是不變的
調用srand(time(0));
把當前時間作為種子即可