1. c語言random()的問題
srand((int)time(NULL))用於設定隨機數種子。rand()%100,產生0-99的隨機數。如果要產生16-59之間的數,可以這樣寫:rand()%44+16(這里44由59-16+1得到)。其他情況與此雷同。
rand()是不能產生真正的隨機數的。即使不能產生真正的隨機數,也要大概接近。而rand()好象每次的隨機都一樣。之所以rand()每次的隨機數都一樣是因為rand()函數使用不正確。
各種編程語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值,當序列足夠長,這組數值近似滿足均勻分布。
(1)c語言中random包含在哪擴展閱讀
調用隨機數函數 rand()() 的時候, 實際得到的這個隨機數並不是絕對隨機的,它是以一個初始值,通過一個演算法,計算出來的「偽隨機數"數列,每次調用rand()()時,從這個數列依次取出一個值,做為隨機數。
這個初始的值就是"隨機數種子", 也就是說,如果隨機數種子相同,計算出的隨機數數列是相同的。而srand()om( x) 這個函數就是初始化隨機數產生器,設定隨機數種子用的。給定的x的就是隨機數種子。可以驗證,當你多次調用srandm(x)時,如果x取值相同,則得到的隨機數數列是一樣的。
所以,若我們每次運行程序時,要得到不同的隨機數序列,就應該用不同的種子來初始化這個隨機數產生器。比如說,用時間初始化它,或者用getpid(),用進程的pid號初始化,由於每次運行程序時,它的pid號一般是不同的,所以能夠產生不同的隨機數序列。
2. C語言中 random使用
/* Note:Your choice is C IDE */
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
void main()
{
int i,count[100];
for(i=0;i<100;i++)
{count[i]=random(1000);//設定取值范圍,這表明隨機數是0-1000之間取
printf("%d\n",count[i]);
}
}
這樣應該滿足你的要求了
3. C語言random函數
s_addr是一個long型的變數,當然可以用random的返回值進行賦值。結構體如下:
typedef struct in_addr {
union {
struct {
u_char s_b1,s_b2,s_b3,s_b4;
} S_un_b;
struct {
u_short s_w1,s_w2;
} S_un_w;
u_long S_addr;////////////////////////////////////////這里
} S_un;
} in_addr;
IP地址本來就是一個32位整數,只不過為了方便記憶和查看,將8位作為一組,每組用10進制數字表示,並且用'.'隔開。比如:0.0.0.3,對應的32位二進制數為:0000000000.....111(前面有29個0),s_addr就是記錄這個二進制數的。
struct {u_char s_b1,s_b2,s_b3,s_b4;} S_un_b;
這個是用4個10進制數表示的IP地址,
s_un_b.s_b1=0
s_un_b.s_b2=0
s_un_b.s_b3=0
s_un_b.s_b4=3
就是IP地址"0.0.0.3"了,系統負責將它轉換為32位二進制數。
struct {u_short s_w1,s_w2;} S_un_w;
這個是指前16位作為一部分,後面16位作為一個部分。".0.0.0.3"前面16位作為一個部分值為0,後面的部分值為3,所以:
s_un_w.s_w1=0;
s_un_w.s_w2=3;
4. C語言隨即函數random()問題!急!!!
randomize()和random()這兩個函數,在c語言的標准庫裡面,早就不用了。
現在,要用srand()和rand()來設置種子和產生隨機數了
5. C語言中 random() 函數怎麼用
srand(int)用來設種子,然後每次rand()返回一個隨機值種子最好是每次都不同的,否則你每次得到的都是同樣的一系列偽隨機數,通常讓種子和當前時間相關,比如srand((unsigned)time(0));
6. 詳細介紹一下C語言裡面的隨機數產生函數random怎麼用
rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,我們可以稱它為種了,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值,C提供了 srand()函數,它的原形是void srand( int a).
初始化隨機產生器既rand()函數的初始值,即使把種子的值改成a; 從這你可以看到通過sand()函數,我們是可以產生可以預見的隨機序列,那我們如何才能產生不可預見的隨機序列呢?我們可能常常需要這樣的隨機序列,是吧。利用srand((unsign)(time(NULL))是一種方法,因為每一次運行程序的時間是不同的.
下面講一講在C語言里所提供的隨機數發生器的用法。現在的C編譯器都提供了一個基於ANSI標準的偽隨機數發生器函數,用來生成隨機數。它們就是rand()和srand()函數。這二個函數的工作過程如下:
1) 首先給srand()提供一個種子,它是一個unsigned int類型,其取值范圍從0~65535;
2) 然後調用rand(),它會根據提供給srand()的種子值返回一個隨機數(在0到32767之間)
3) 根據需要多次調用rand(),從而不間斷地得到新的隨機數;
4) 無論什麼時候,都可以給srand()提供一個新的種子,從而進一步「隨機化」rand()的輸出結果。
以下是一個產生隨機數的例子:
需要首先使用隨機數「種子」初始化,srand函數:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>//使用當前時鍾做種子
voidmain(void)
{
inti;
srand((unsigned)time(NULL));//初始化隨機數
/*列印10個隨機數.*/
for(i=0;i<10;i++)
printf("%d ",rand());
}
#include<stdlib.h>
#include<time.h>
main
{
inti;
srand(time(0));//初始化隨機種子
i=rand();//產生隨機數
}
首先,加一個"#include<stdlib.h>
然後設一個變數,如j,j=rand(),就可以給j賦一個1~32767的隨機數,如果要獲得一個隨機函數的十位(其它類似),只需令j=j%10就行.
添加頭文件 #include<time.h>
然後在文件中添加 srand((unsigned)time(NULL));
srand()是用來初始化隨機種子數的,因為rand的內部實現是用線性同餘法做的,它不是真的隨機數,只不過是因為其周期特別長,所以有一定的范圍里可看成是隨機的.
上面是有個隨機種子的說明及方法,為了避免重復.然後再 用 隨機函數,rand() 就行了.
頭文件是 stdlib.h
random() 產生隨機數為 0或1
random(n) 產生隨機數為 0到n之間的一個隨機數
rand() 產生 0到32768之間的一個隨機數
函數名: randomize
功 能: 初始化隨機數發生器
用 法: void randomize(void);
程序例:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
intmain(void)
{
inti;
randomize();
printf("Tenrandomnumbersfrom0to99 ");
for(i=0;i<10;i++)
printf("%d ",rand()%100);
return0;
}
7. c語言random函數怎麼用
C語言裡面沒有random函數
只有rand
功能是產生一個整型隨機數。
比如
n=rand();
這樣就可以了
為了真隨機,一般在開始設置一個種子 一次即可。 常用方式為
srand(time(NULL));
8. c語言里 random函數怎麼實現的
1.
rand函數是根據一個數(我們可以稱它為種子)為基準,以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數,
2.
但這產生的並不是真意正義上的隨機數,是一個偽隨機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統,為了改變這個種子的值。
3.
種子相同,產生的隨機序列相同。這樣做的好處是,方便我們產生一組固定的隨機序列,用來調試程序。
4.
C提供了srand()函數,用來設置種子,它的原形是void
srand(
int
a)。
5.
在調用rand函數產生隨機數前,應該先利用srand()設好隨機數種子,如果未設隨機數種子,默認種子為1。
9. 請教一個C語言的問題,關於random函數的。
本程序已運行成功
#include<stdio.h>
#include<stdlib.h>
void main()
{
int a[5][5];
int i,j,t,row,col,max;
randomize();/*初始化隨機數發生器*/
for(i=0;i<5;i++)
for(j=0;j<5;j++)
a[i][j]=random(100);/*產生隨機數*/
for(i=0;i<5;i++)/*輸出數組*/
{
for(j=0;j<5;j++)
printf("%-5d",a[i][j]);
putchar('\n');
}
for(i=0;i<5;i++)/*第一行和第五行互換*/
{
t=a[0][i];
a[0][i]=a[4][i];
a[4][i]=t;
}
putchar('\n');
for(i=0;i<5;i++)/*輸出互換後的數組*/
{
for(j=0;j<5;j++)
printf("%-5d",a[i][j]);
putchar('\n');
}
for(i=0;i<5;i++)/*求每行最大值*/
{
row=i;
col=0;
max=a[i][0];
for(j=0;j<5;j++)
{
if(max<a[i][j])
{
max=a[i][j];
col=j;
}
}
printf("max=%-d row=%-5d colum=%-5d\n",max,row,col);/*輸出行、列號,和最大值*/
}
getch();
}
10. c語言randomize()函數是初始化隨機數發生器,請問它包含在那個函數庫里
randomize()和random()這兩個函數,在c語言的標准庫裡面,早就不用了。
現在,要用srand()和rand()來設置種子和產生隨機數了
希望回答能幫到你,哪裡不清楚再問。