日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

随机抽样java_实现随机抽样【随机数生成问题】

發布時間:2025/3/12 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 随机抽样java_实现随机抽样【随机数生成问题】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、rand()

定義:

int rand(void);

返回值:返回一個偽隨機數,該數的范圍是:[0,RAND_MAX)

2、srand()

定義:

void srand(unsigned intseed);

返回值:該函數是隨機數發生器的初始化函數;如果使用相同的種子給rand用,那么rand()會產生相同的偽隨機數。常用的用法如下:

(1) srand((unsigned)time(&t));(2) srand((unsigned)time(NULL));這兩個都是用當前時間去初始化種子;

(3) srand((int)getpid());使用程序的PID來作種子,那么在這個程序運行時種子固定那個。

3、實戰經驗

(1)使用math.h中的函數floor時報如下錯誤,經查是沒有指定鏈接庫。使用gcc -o randint randint.c -lm即可

(2)采用下面這個例子,生成隨機數,如果個數多了,偶爾會有重復的值

#include

#include

#include

#define NUMBER_MAX 100

int main(int argc,char* argv[])

{

int num[NUMBER_MAX];

int i;

FILE *rand_num_file = fopen("rand_num_file.txt","w+");

srand((unsigned)time(NULL));

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

{

num[i] = rand()%900 + 100;

fprintf(rand_num_file,"%d\n",num[i]);

}

return 0;

}

(3)Makefile的學習刻不容緩,十一之后來了主攻《git權威指南》和《shell編程學習指南》

(4)按照網上的一種解法,實現randint和bigrand:用rand實現bigrand和randint

仍然會有重復的數值,那么我們怎么解決這個問題呢?我們要的是100~999之間的任意100個隨機數,要求不能重復!

#include

#include

#include

#include

#define NUMBER_MAX 100

int randint(int l, int u);

int main(int argc,char* argv[])

{

int num[NUMBER_MAX];

int i;

FILE *rand_num_file = fopen("rand_num_file.txt","w+");

srand((unsigned)time(NULL));

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

{

//num[i] = rand()%900 + 100;//生成[100,999)之間的隨機數

num[i] = randint(100,1000);

fprintf(rand_num_file,"%d\n",num[i]);

}

return 0;

}

//實現randint(l,u),返回[l,u]范圍內的一個隨機整數

int randint(int l,int u)

{

int temp;

temp = floor(l + (1.0*rand()/RAND_MAX)*(u - l + 1 ));

return temp;

}

補上:

今天看到用java語言生成隨機數,有這么一個想法,也能滿足我們的要求:生成[n,m]之間的k個不重復的隨機數。參見:點擊打開鏈接

總結

以上是生活随笔為你收集整理的随机抽样java_实现随机抽样【随机数生成问题】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。