CList隨機數,C怎麼在list集合中隨機取出一個值

2021-05-11 16:13:16 字數 5210 閱讀 8121

1樓:水上漂湯

這個是自然的,1到101之間有101個數,當i.count=100的時候,就只有一個不重複的數可以新增到i裡面了。既然是隨機數,怎麼會產生指定的那個數呢?

假如只剩下100可以新增到i裡面,要隨機多少次才會產生出這個數呢? 進入死迴圈是必須的

c#如何從一個列表裡取一個隨機數?

2樓:匿名使用者

輸入:列表 輸出:隨機元素

public t getrandomitem(ilistlist)sh

3樓:匿名使用者

random物件就是生成隨機數的!

c#怎麼在list集合中隨機取出一個值

4樓:小唯殿

剛剛有個人說的對,但是有些籠統

random rm = new random();

int i = rm.next(list.count)  //隨機數最大值不能超過list的總數

list[i];

這樣就可以,

內當然,省下來

容i其實也可以

5樓:匿名使用者

用random定義一個隨機數,然後list[隨機數]。

c#中如何從陣列中獲取一個隨機數

6樓:匿名使用者

最簡單的就是用random產生1個隨機數,隨機數的範圍為0~xx.length-1;這樣的話比如陣列是20個數,那麼殘生的隨機數n就在(0~19)之間,然後把n帶進陣列xx[n]就可以取出隨機索引的數了撒~ int xx = new int [3] ;

random r = new random(); int n = r.next(0, xx.length-1);xx[n]就是隨機取出的數

7樓:匿名使用者

通過使用random自動生成一個隨機數,確定陣列的下標,從而活得隨機一個陣列

string item=new string[4] ;

random r = new random();

string fi1 = item[r.next(item.length)];

8樓:匿名使用者

在c#中獲取隨機數有三種方法:

一.random 類random類預設的無參建構函式可以根據當前系統時鐘為種子,進行一系列演算法得出要求範圍內的偽隨機數.view sourceprint?

1    random rd = new random(); 2    int i = rd.next();這種隨機數可以達到一些要求較低的目標,但是如果在高併發的情況下,random類所取到的系統時鐘種子接近甚至完全一樣,就很有可能出現重複,這裡用迴圈來舉例view sourceprint? 1for (int i = 0; i < 10; i++) 2這個例子會輸出10個相同的"隨機數".

突顯出的問題:因為random進行偽隨機數的演算法是固定的,所以根據同一個種子計算出的數字必然是一樣的.而以當代計算機的執行速度,該迴圈幾乎是在瞬間完成的,種子一致,所以會出現10次迴圈輸出同一隨機數的情況.

二.guid 類system.guidguid (globally unique identifier) 全球唯一識別符號guid的計算使用到了很多在本機可取到的數字,如硬體的id碼,當前時間等.

所計算出的128位整數(16位元組)可以接近唯一的輸出.view sourceprint? 1    console.

writeline(guid.newguid().tostring());

計算結果是******xx-***x-***x-***x-************結構的16進位制數字.

三.rngcryptoserviceprovider 類system.security.

cryptography.rngcryptoserviceprovider rngcryptoserviceprovider 使用加密服務提供程式 (csp) 提供的實現來實現加密隨機數生成器 (rng)view sourceprint? 1rngcryptoserviceprovider csp = new rngcryptoserviceprovider(); 2byte bytecsp = new byte[10]; 3csp.

getbytes(bytecsp); 4console.writeline(bitconverter.tostring(bytecsp));因該類使用更嚴密的演算法.

所以即使如下放在迴圈中,所計算出的隨機數也是不同的.view sourceprint? 1for (int i = 0; i < 10; i++) 2view sourceprint?

1但是rngcryptoserviceprovider的計算較為繁瑣,在迴圈中使用會消耗造成大量的系統資源開銷,使用時需注意.

四.membership.generatepassword()membership是一個方便快捷的進行角色許可權管理的類,偶然發現一個很有意思的方法,跟隨機數也擦點邊吧view sourceprint?

01public static string generatepassword(int length, int numberofnonalphanumericcharacters); 02// 03// 摘要: 04// 生成指定長度的隨機密碼。 05// 06// 引數:

07// numberofnonalphanumericcharacters: 08// 生成的密碼中的標點字元數。 09// 10// length:

11// 生成的密碼的字元數。長度必須介於 1 和 128 個字元之間。 12// 13// 返回結果:

14// 指定長度的隨機密碼。

例:view sourceprint? 1for (int i = 0; i < 10; i++) 2

9樓:匿名使用者

int xx = new int[3] ;

int x;

random r = new random();

x = r.next(4, 6);

c#中,怎麼產生一個隨機數?

10樓:匿名使用者

.***.frameword中提供了一個專門產生隨機數的類system.

random,此類預設情況下已被匯入,程式設計過程中可以直接使用。我們知道,計算機並不能產生完全隨機的數字,它生成的數字被稱為偽隨機數,它是以相同的概率從一組有限的數字中選取的,所選的數字並不具有完全的隨機性,但就實用而言,其隨機程度已經足夠了。

可以用以下兩種方法初始化一個隨機數發生器;

函式是這樣用,比如100至999的隨機數

random ran=new random();

int randkey=ran.next(100,999);

不過這樣會有重複,可以給random一個系統時間做為引數,以此產生隨機數,就不會重複了

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

random ra=new random();

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

int iseed=6;

random ra=new random(iseed);

下面我們要用到random.next()方法產生隨機數。

ra.next();

它返回一個大於或等於零而小於2,147,483,647的數,這並不滿足我們的需要,下面我們介紹它的過載函式和其它一些方法。

public virtual int next(int);

用法:ra.next(20)

返回一個小於所指定最大值(此處為20)的正隨機數。

public virtual int next(int minvalue, int maxvalue);

用法:ra.next(1,20)

返回一個指定範圍內(此處為1-20之間)的隨機數,我們在下面的例項中會用到此函式。

類system.random還有幾個方法分別是:

公共方法:

nextbytes用隨機數填充指定位元組陣列的元素。

nextdouble返回一個介於 0.0 和 1.0 之間的隨機數。

受保護的方法:

sample返回一個介於 0.0 和 1.0 之間的隨機數,只允許子類物件訪問。

以上介紹了隨機數的基本用法,下面我們用一個例項來做更進一步的介紹。要在一段數字區間內隨機生成若干個互不相同的隨機數,比如在從1到20間隨機生成6個互不相同的整數。

主要是下面兩個函式getrandomnum與getnum:

public int getrandomnum(int num,int minvalue,int maxvalue)

return arrnum;

}getrandomnum即是在區間[minvalue,maxvalue]取出num個互不相同的隨機數,返回的陣列包含著結果。

其中隨機數是這樣建立的 random ra=new random(unchecked((int)datetime.now.ticks));為什麼不用random ra=new random();(系統自動選取當前時前作隨機種子)

用系統時間做隨機種子並不保險,如果應用程式在一個較快的計算機上執行,則該計算機的系統時鐘可能沒有時間在此建構函式的呼叫之間進行更改,random 的不同例項的種子值可能相同。這種情況下,我們就需要另外的演算法來保證產生的數字的隨機性。所以為了保證產生的隨機數足夠"隨機",我們不得不使用複雜一點的方法來獲得隨機種子。

在上面的這段程式中,我們首先使用系統時間作為隨機種子,然後將上一次產生的隨機數跟迴圈變數和一個與系統時間有關的整型引數相乘,以之作為隨機種子,從而得到了每次都不同的隨機種子,保證了產生足夠"隨機"的隨機數。

函式getnum是一遞迴,用它來檢測生成的隨機數是否有重複,如果取出來的數字和已取得的數字有重複就重新隨機獲取。值得注意的是要用一同一個隨機數例項生成,所以ra要作為引數傳入getnum中,否則生成的數字會有重複。

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

n ;}

return tmp;

}最後就是要顯示出來,當點選一個button時取出的數字顯示在一個label中。

private void button1_click(object sender, system.eventargs e)

label1.text=temp; //顯示在label1中}

明明的隨機數 c語言,明明的隨機數 C語言

你的邏輯還不對哦,要想在輸出時輸出空格printf d i d後面加空格就可以了,或用格式修飾符,比如 3d等 如果是隨機產生1到1000的數字,可以使用隨機函式。同時你所寫的程式有部分不符合題目的要求 1.隨機產生數,且相同的數字只保留一個。2.對這些數字進行從小到大的順序排列。程式如下 incl...

C均勻分佈隨機數,c語言產生均勻分佈隨機數為什麼是同一個值啊

float a 6400 srand time 0 for int i 0 i 6400 i 初始化種子之後,呼叫rand 就是隨機均勻分佈的。如果要產生諸如正態分佈等等的曲線的話需要用其它工具或者是自己寫演算法。c 產生 a,b 區間的均勻分佈的隨機數 x float rand float ran...

隨機數生成器怎麼使用,隨機數生成器怎麼使用

選擇隨機數需要的複雜度,例如加入數字,字母,特殊符號等,選擇位數,點選生成就可以啦 a rand 求個隨機數生成器 隨機數生成器是一款能夠生成各種隨機數字的工具 支援生成數字 骰子 條碼 賬戶等 ramdom rd new ramdom 例項化random 類的新例項rd for int 0 i 1...