C生成1 20隨機數不重複,C 如何生成不重複的1 100隨機數。

時間 2022-03-15 02:00:29

1樓:匿名使用者

public void generaterandomnums()value = rand.next(1, 21);

if(!list.contains(value))}foreach (int temp in list).", temp);}}

c# 如何生成不重複的1-100隨機數。

2樓:匿名使用者

有兩種思路:1、隨機生成一個1-100的數,然後判斷重複,如果重複再生成一次;

2、建立一個陣列,元素內容為1-100,對元素隨機排序。

請參考下面的**

public void generaterandomnums()value = rand.next(1, 21);

if (!list.contains(value))}foreach (int temp in list).", temp);}}

第二種思路:

int a = ;

int b = a.orderby(x => guid.newguid()).toarray();

foreach (int v in b)

console.writeline(v);

console.readkey();

3樓:陽光的雷咩咩

random r = new random();

int nums = enumerable.range(1, 100)

.orderby(x => r.next()).toarray();

foreach (int n in nums)console.writeline(n);

c#如何實現用隨機函式取出1到20之間的所有數且不重複?

4樓:匿名使用者

可以將1-20存入列表中,迴圈,第一次產生1-20的隨機數,取出列表中對應隨機數位置的數,並將此數在列表中刪除,第二次產生1-19的隨機數,一次類推即可。。。

5樓:

網上覆制一段不用list的**略作修改,供你參考:

int tt, i = 0, k = 0, p;

int array = new int[20];

random r = new random();

array[0]=r.next(0,20);

while (i < 20)

if (p == 0) }

6樓:匿名使用者

random ra = new random();

listlist = new list();

while (list.count < 20)

7樓:匿名使用者

static void main(string args)}

c#有沒有函式能生成不重複的隨機數,比如1-10之間的不重複隨機數???

8樓:匿名使用者

用random類生成隨機數,然後還前面生成的隨機數比較,如果相同就刪除。

然後繼續用random生成隨機數只到生成的隨機數一個都不重複下面的**可以參考一下,主要是用了rand類的next方法int randomarray = new int[20];

random random=new random();

randomarray[0] = random.next(1, 10);

for (int i = 1; i < 4; i++)}} while (foundsame);}

9樓:匿名使用者

有,不過得自己寫!當取到一個隨機值時,從陣列中排除掉,再從剩餘的陣列中繼續取,直到陣列為空!

c#有沒有函式能生成不重複的隨機數,比如1

10樓:

c#有隨機器random,可以生成數字。**一般這樣:

random rand = new random(); //這個是當前時間作為隨機種子,生成的數字有可能重複,機率小。

rand.next(1, 10000);生成1與10000之間的int

如果想重複的機率小一些,就給random()一個種子

long tick = datetime.now.ticks;

random ran = new random((int)(tick & 0xffffffffl) | (int) (tick >> 32));

但也不是絕對的,機率非常小,幾乎可以不計。如果非要絕對不復重,你只有生成數字後去和以前生成的數字進行比較(寫個遞迴,但效能不好)。

11樓:空心蓮

可以給所有的隨機數設屬性(true or false)

c#最簡單的不重複隨機數生成

12樓:丁洪飛

string temp = ""; //臨時容器int n =0;

random rd = new random();

while(n <10)

else

}console.readline();

13樓:安靜的

去看看這個吧 類似的!希望對於有幫助!

.net 下用c#產生一個永不重複10位隨機數

14樓:敘事詩鞍悄

我們在做能自動生成試卷的考試系統時,常常需要隨機生成一組不重複的題目,在.net

framework中提供了一個專門用來產生隨機數的類system.random。

對於隨機數,大家都知道,計算機不可能產生完全隨機的數字,所謂的隨機數發生器都是通過

一定的演算法對事先選定的隨機種子做複雜的運算,用產生的結果來近似的模擬完全隨機數,這

種隨機數被稱作偽隨機數。偽隨機數是以相同的概率從一組有限的數字中選取的。所選數字並

不具有完全的隨機性,但是從實用的角度而言,其隨機程度已足夠了。偽隨機數的選擇是從隨

機種子開始的,所以為了保證每次得到的偽隨機數都足夠地「隨機」,隨機種子的選擇就顯得

非常重要。如果隨機種子一樣,那麼同一個隨機數發生器產生的隨機數也會一樣。一般地,我

們使用同系統時間有關的引數作為隨機種子,這也是.net framework中的隨機數發生器預設採

用的方法。

我們可以使用兩種方式初始化一個隨機數發生器:

第一種方法不指定隨機種子,系統自動選取當前時間作為隨機種子:

random ro = new random();

第二種方法可以指定一個int型引數作為隨機種子:

int iseed=10;

random ro = new random(10);

long tick = datetime.now.ticks;

random ran = new random((int)(tick & 0xffffffffl) | (int) (tick >> 32));

這樣可以保證99%不是一樣。

之後,我們就可以使用這個random類的物件來產生隨機數,這時候要用到random.next()方

法。這個方法使用相當靈活,你甚至可以指定產生的隨機數的上下限。

不指定上下限的使用如下:

int iresult;

iresult=ro.next();

下面的**指定返回小於100的隨機數:

int iresult;

int iup=100;

iresult=ro.next(iup);

而下面這段**則指定返回值必須在50-100的範圍之內:

int iresult;

int iup=100;

int idown=50;

iresult=ro.next(idown,iup);

除了random.next()方法之外,random類還提供了random.nextdouble()方法產生一個範

圍在0.0-1.0之間的隨機的雙精度浮點數:

double dresult;

dresult=ro.nextdouble();

但是用random類生成題號,會出現重複,特別是在數量較小的題目中要生成不重複的的題目

是很難的,參考了網上的一些方法,包括兩類,一類是通過隨機種子入手,使每一次的隨機種

子不同,來保證不重複;第二類是使用一些資料結構和演算法。下面主要就第二類介紹幾個方

法。方法1:思想是用一個陣列來儲存索引號,先隨機生成一個陣列位置,然後把這個位置的索引號

取出來,並把最後一個索引號複製到當前的陣列位置,然後使隨機數的上限減一,具體如:先

把這100個數放在一個陣列內,每次隨機取一個位置(第一次是1-100,第二次是1-99,...),

將該位置的數用最後的數代替。

int index = new int[15];

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

index = i;

random r = new random();

//用來儲存隨機生成的不重複的10個數

int result = new int[10];

int site = 15;//設定下限

int id;

for (int j = 0; j < 10; j++)

方法2:利用hashtable。[nextpage]

hashtable hashtable = new hashtable();

random rm = new random();

int rmnum = 10;

for (int i = 0; hashtable.count < rmnum; i++)

}方法3:遞迴,用它來檢測生成的隨機數是否有重複,如果取出來的數字和已取得的數字有重複就重新隨機獲取。

random ra=new random(unchecked((int)datetime.now.ticks));

int arrnum=new int[10];

int tmp=0;

int minvalue=1;

int maxvalue=10;

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

.........

.........

public int getnum(int arrnum,int tmp,int minvalue,int maxvalue,random ra)

n++;

}return tmp;}

15樓:當愛依成傳說

使用guid的雜湊碼作為種子值,就不會重複了,**如下:

public class randomhelper{///

///生成制定位數的隨機碼(數字)

/////////

16樓:幻想武士

說的比較籠統!

永不重複10位隨機數

?包括數字和字母?

17樓:匿名使用者

思路:可以用隨機數加時間的方法,這樣絕對不會重複

c#生成制定範圍和數量的隨機數,要求不重複

18樓:**最大功能

listlist = new list();//用來存放所要的隨機數random r = new random();

for (int i = 0; i < 5; i++)//弄5個隨機數

else}

求高手,c#,如何生成15個1-15之間的不重複的隨機數???

19樓:archer羽的傳說

考慮到演算法效率~你其實可以用另一種方式來實現~先生成一個1-15按順序的陣列

然後生成隨機變數種子~

每次取一個在陣列長度內的隨機數

然後取出對應的數值並放到另一個陣列中

而存的那十五個數值的陣列則把該數值去除~這樣十五次就能得到了~**如下:

//定義陣列~並給出長度

listilist = new list();;

//設定初始值

for (int i = 1; i < 16; i++)random rd = new random();

//要得到15個隨機數

int shownum = new int[15];

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

c 中產生不重複的隨機數

解題思路 這個題目要解決兩個問題 一是產生隨機數 二是不能重複。第一個問題 產生隨機數。在c 中要產生隨機數必須用到兩個函式 srand 和rand 函式,使用這兩個函式必須包含標頭檔案 其中rand 是產生一個偽隨機數,比如 int a rand 函式返回值的取值範圍是int型別的取值範圍,如果要...

excel中如何生成不重複的多個隨機數

先在a1 a8中輸入相同的公式 int rand 15 1 再在b1中輸入下面公式,並拖動複製到b8格,如果a列中有重複,b列對應的格會顯示大於1的數字,等於1為不重複。countif a 1 a 8,a1 然後按鍵盤上方的f9功能鍵,直到b列格中都是1,就行了。 一種思路是,先 生成1 15間的一...

如何用c 產生隨機數,如何用C 產生隨機數?

在煙幹辰 rand 這個函式就是產生隨機數的,想要一個範圍的隨機數,可以用取餘數的方式 如取0 99之間的數,可以rand 100 需要使用rand 和srand 函式 rand 為隨機數函式,產生 0,int型最大值 之間的整數數 srand seed 為初始化隨機數種子函式 具體例子如下 inc...