當前位置:首頁 » 操作系統 » 隨機語句源碼

隨機語句源碼

發布時間: 2022-08-11 07:47:11

1. 如何在c語言中生成正態分布的隨機數,要源代碼~謝謝

隨機生成一百個1至100的隨機數。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100
int main(int argc, char *argv[])
{
int i;
int a[N];
srand(time(NULL));
for(i=0;i<N;i++)
a[i]=rand()%100+1;
printf("生成的隨機數為:\n");
for(i=0;i<N;i++)
{
printf("%5d",a[i]);
if((i+1)%10==0)
printf("\n");
}
system("PAUSE");
return 0;
}
輸出結果如下:
生成的隨機數為:
41 15 82 1 23 51 16 96 92 17
86 71 87 69 74 5 50 18 42 52
46 34 52 18 40 74 79 35 22 36
65 94 80 91 18 72 61 79 4 11
61 30 95 55 11 19 38 87 78 52
95 30 99 53 99 99 10 79 70 33
91 85 10 99 47 58 93 41 19 71
56 60 10 24 73 87 18 38 13 73
57 22 91 4 37 60 67 58 85 48
46 7 57 100 73 96 60 44 24 23
請按任意鍵繼續. . .

2. 急!!!!!用c語言編寫的產生正態隨機數的源代碼!!!

一般有兩種演算法
演算法一產生12個(0,1)平均分布的隨機函數,用大數定理可以模擬出正態分布。
演算法二用到了數學中的雅可比變換,直接生成正態分布,但此演算法在計算很大規模的數時
會出現溢出錯誤。
測試程序:
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

double _random(void)
{
int a;
double r;

a=rand()%32767;
r=(a+0.00)/32767.00;

return r;

}

double _sta(double mu,double sigma)
{
int i;
double r,sum=0.0;

if(sigma<=0.0) { printf("Sigma<=0.0 in _sta!"); exit(1); }
for(i=1;i<=12;i++)
sum = sum + _random();
r=(sum-6.00)*sigma+mu;

return r;

}

double _sta2(double mu,double sigma)
{
double r1,r2;

r1=_random();
r2=_random();

return sqrt(-2*log(r1))*cos(2*M_PI*r2)*sigma+mu ;

}

int main()
{
int i;
double mu,sigma;

srand( (unsigned)time( NULL ) );
mu=0.0;
sigma=1.0;
printf("Algorithm 1:\n");
for(i=0;i<10;i++)
printf("%lf\t",_sta(mu,sigma));
printf("Algorithm 2:\n");
for(i=0;i<10;i++)
printf("%lf\t",_sta2(mu,sigma));
return 0;

}

//由均勻分布的隨機數得到正態分布的隨機數
#include <math.h>

float gasdev(im)
int *im;
{
static int iset=0;
static float gset;
float fac,r,v1,v2;
float ran1();//產生均勻分布的隨機數,可利用系統函數改寫

if (iset == 0) {
do {
v1=2.0*ran1(im)-1.0;
v2=2.0*ran1(im)-1.0;
r=v1*v1+v2*v2;
} while (r >= 1.0);
fac=sqrt(-2.0*log(r)/r);
gset=v1*fac;
iset=1;
return v2*fac;
} else {
iset=0;
return gset;
}
}
原理可找本數值演算法方面的書看看。

3. C語言如何產生一定范圍內一定數量的不同隨機數

源代碼如下:

#include <stdio.h>

#include <stdlib.h>

#include <stdbool.h>

#include <unistd.h>

#define a 16807//or 48271

#define m 2147483647

#define q (m/a)

#define r (m%a)

static long int seed = 1;

//return rand long in [1,m]

long int pm_rand(void)

{

long hi = seed / q;

long lo = seed % q;

long tmp = a * lo - r * hi;

if(tmp > 0)

seed = tmp;

else

seed = tmp + m;

return seed;

}

int main(void)

{

for(int i = 0;i < 100;++i)

printf("%ld ",pm_rand());

puts("");

return 0;

}

(3)隨機語句源碼擴展閱讀

不指定范圍產生隨機數的源代碼

#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
for(i=0; i<10; i++) //隨機產生10個數。
{
printf("%d ", rand());
}
return 0;
}

4. 急 求c語言隨機抽取姓名源碼

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
struct
{
charstr[20];//名字
intno;//號碼
}a[99]={{"",0}};//初始化
intmain()
{
FILE*fp;
charch;
inti,n=0,choice,who;
fp=fopen("name.txt","r");
if(fp==NULL)
{
printf("cannotopenthefile ");
return1;
}
while((ch=fgetc(fp))!=EOF)
{
if(ch==' ')n++;//一行一個名字,計算人數
}
rewind(fp);
for(i=0;i<n;i++)
{
a[i].no=i;//每人對應的號碼
fscanf(fp,"%s ",a[i].str);

}
srand(time(NULL));
for(i=1;i<n;i++)
{
printf("============= 1.抽取0.退出 ============= ");
scanf("%d",&choice);
if(choice==1)
{
loop:
who=rand()%n+1;
if(a[who].no==0)gotoloop;
puts(a[who].str);
a[who].no=0;//抽取過的標志為0
}
elsebreak;
}
fclose(fp);
return0;
}

5. 易語言隨機抽簽源碼

變數A取隨機數
變數B取隨機數
變數C=A+"-"+B

6. vb 隨機數 源代碼

A為數組變數. 如果要讀取A的數值,用循環就可以讀出

'需要控制項:command1,text1,text2
Dim A(20) As Single

Private Sub Command1_Click()
Call RndNum(Text1, Text2)
End Sub

Private Sub Form_Load()
Text1 = 2 '起點
Text2 = 100 '終點

End Sub

Sub RndNum(S1 As Long, S2 As Long)
For i = 1 To 20
A(i) = Format(Rnd() * S2, "#.00")
If A(i) < S1 Then A(i) = A(i) + S1
Print A(i)
Next i
End Sub

7. c/c++的隨機函數的源代碼怎麼寫

static int next=1;
int rand(void)

{
next = next * 1103515245 + 12345;
return (next/65536) % 32768;
}
return一句的功能只是把得數的絕對值控制在0~32767之間,關鍵是next = next * 1103515245 + 12345一句。next變數是靜態的,變化以後的值是不消失的,下一次還可用,所以每執行一次next = next * 1103515245 + 12345就獲得一個新值,這個新值被return取整除、取余除後控制在0~32767之間就形成了0~32767的隨機數。比如第一次,next=1*1103515245 + 12345=1103527590,經return中的對65536取整、對32768取余後就是16838;若再來一次,next已經是1103527590了,那麼next = next * 1103515245 + 12345就為next = 1103527590 * 1103515245 + 12345=1217759518843121895;但這個數已經溢出了,實際上表示成了-1770082073,經return中取整取余後返回的就是-27009;可以算出來,再下一次是10113……不過,你這個函數並不能產生真正意義上的「隨機」數,因為作為基數的1103515245在每次開始時是不變的,所以只能得出同樣的序列,即每次執行都產生16838、-27009、10113……這樣一組無限多的數。所以實際的C隨機函數rand()的形參並不是void而是一個長整型變數,通常來調用實時時間函數獲取實時時間值來得到,因為時間是每時每刻都在變化的,所以充當"1103515245」角色的數就每調用一次的值都不同。這樣每次執行就都能得到不重復的序列。至於12345,我想隨便取個數都行!僅供參考……

8. 易語言隨機抽取一個數值的源碼

.程序集 窗口程序集1
.程序集變數 名字組, 文本型, , "0"

.子程序 __啟動窗口_創建完畢

名字組 = { 「趙1」, 「趙2」, 「趙3」, 「趙4」, 「趙5」, 「趙6」, 「趙7」, 「趙8」 }
置隨機數種子 ()
編輯框1.標記 = 「1」
編輯框2.標記 = 「2」
編輯框3.標記 = 「3」
編輯框4.標記 = 「4」
編輯框5.標記 = 「5」
編輯框6.標記 = 「6」
編輯框7.標記 = 「7」
編輯框8.標記 = 「8」

.子程序 _按鈕1_被單擊
.局部變數 文本, 文本型
.局部變數 臨時數組, 文本型, , "0"
.局部變數 y, 整數型
.局部變數 x, 整數型
.局部變數 編輯框變數, 編輯框

臨時數組 = 名字組
.判斷循環首 (取數組成員數 (臨時數組) > 0)
x = 取隨機數 (1, 取數組成員數 (臨時數組))
文本 = 文本 + 「[」 + 臨時數組 [x] + 「]」
編輯框變數 = 取標記組件 (取數組成員數 (臨時數組))
編輯框變數.內容 = 臨時數組 [x]
清除數組 (臨時數組)
.計次循環首 (取數組成員數 (名字組), y)
.如果真 (尋找文本 (文本, 「[」 + 名字組 [y] + 「]」, 0, 假) < 0)
加入成員 (臨時數組, 名字組 [y])

.如果真結束
調試輸出 (名字組 [y])
.計次循環尾 ()
.判斷循環尾 ()

9. randomize()源代碼是什麼

我知道C語言的隨機數,Randomize應該是初始化隨機函數吧,源代碼可能很簡單
seed = i;
其中i可能是當前系統時間,或者是快速變化著的CPU時鍾,只要你想得到是可以的,都可以當做i
seed就是隨機種子,不同的種子種下之後,理論上就可以產生不同的果實(隨機數列)
而rand () (在C中的隨機數)其實也復雜不到那裡去,畢竟是偽隨機數。
它採用一種叫做線性同餘法的方法生成隨機數的。
實際上就是這個遞推公式
Xn+1 = (AXn + B) mod M
mod就是求余(求模)的意思,也就是第二個隨機數是根據第一個生成出來的,所以為什麼第一個叫種子就不難理解了。
M是周期(T = M - 1)的重要標志,M越大周期就越長,如果不想隨機數經常重復就把它設置大一點吧。
A和B都是常量,M是素數(質數),A則是M的原根
如果不知道這些是什麼,那我給出我試過的一組數吧
M = 32719
A = 2
B = 17
效果還可以,畢竟是偽隨機數吧,不能要求太高,一下是我用C語言的實現
#include <stdio.h>

#include <windows.h>

// Global variable

int seed = 0;

// Initialize the Seed

void Srand ( int inSeed )

{

seed = inSeed;

}

// Random Arithmetic

int Random ( void )

{

const unsigned int m = 32719;

const int a = 2;

const int b = 17;

seed = (seed*a + b)%m;

return seed;

}

// CPU clock

int Clock ( void )

{

_asm

{

RDTSC

}

}

int main ( void )

{

int inSeed;

int randNumber;

int count0 = 0, count1 = 0;

printf ( "Please type the initial seed\n0 for default\n" );

scanf ( "%d", &inSeed );

if ( inSeed != 0 )

Srand ( inSeed );

else

Srand ( Clock () );

for ( int i = 0; i < 1000; i++ )

{

randNumber = Random () % 2;

printf ( "%d\n", randNumber );

if ( randNumber == 0 )

count0++;

else

count1++;

}

printf ( "output 0 : %d\n", count0 );

printf ( "output 1 : %d\n", count1 );

system ( "pause" );

return 0;

}
如果不明白,用網路HI我吧

10. 求VB設計一個隨機抽題程序源碼

樓主你好,假設有十道題,Rnd函數返回[0,1)之間的一個隨機數,Randomize是將隨機數初始化,代碼如下:
Private Sub cmdok_click()
Randomize
Label1.Caption="隨機題數為:"&Int((Rnd*10)+1)
End Sub

熱點內容
買的騰訊伺服器是裝在電腦上嗎 發布:2025-01-15 23:25:58 瀏覽:411
如何查看電腦的配置是不是i5 發布:2025-01-15 23:24:21 瀏覽:434
PI資料庫 發布:2025-01-15 23:14:42 瀏覽:882
我的世界手機版暖心伺服器 發布:2025-01-15 23:05:02 瀏覽:169
xts壓縮比 發布:2025-01-15 23:02:41 瀏覽:424
怎麼看聯系人存儲位置 發布:2025-01-15 22:47:14 瀏覽:794
旗艦560配置的是什麼發動機 發布:2025-01-15 22:40:59 瀏覽:626
sql多表連接查詢 發布:2025-01-15 22:33:12 瀏覽:221
android網路休眠 發布:2025-01-15 22:32:12 瀏覽:350
怎麼不下魯大師查看電腦配置 發布:2025-01-15 22:30:23 瀏覽:311