C中如何從陣列中獲取隨機數,C 中如何從陣列中獲取一個隨機數

2021-04-01 08:04:51 字數 2373 閱讀 1324

1樓:匿名使用者

最簡單的就是用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]就是隨機取出的數

2樓:匿名使用者

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

string item=new string[4] ;

random r = new random();

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

3樓:匿名使用者

在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

4樓:匿名使用者

int xx = new int[3] ;

int x;

random r = new random();

x = r.next(4, 6);

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

C如何定義類型別的陣列,C 中如何定義類的陣列,以及給他們賦值?

student 學生物件的陣列 liststu new list 學生物件的集合 c 中自定義類陣列和結構陣列的使用 發現很多時候給定的陣列要實現某個邏輯或處理很是麻煩,一維陣列,二維陣列,等等需要經過n多轉換,還不如自己寫一個自定義陣列,既方便又節省時間,以下是類陣列,其實相當於定義了一個實體類一...

c中如何將string陣列轉換為int陣列

舉個bai例子。du string strarray a,b,c,d,e,f,g split new char int intarray c 3.0下用 此句zhi intarray array.convertall strarray,s int.parse s 2.0下用以下的語dao句替換 專上...

C如何獲取當前時間純數字形式,c 中,如何獲取日期型欄位裡的年 月 日?

你是要時間戳還是要拼接在一起的 datetime now datetime.now 獲取拼接形式的,精確到毫秒 now.tostring yyyymmddhhmmssfff 獲取時間戳 自公元0年算起 單位100毫微秒now.ticks 獲取時間戳 自1970 01 01 0點算起 單位100毫微秒...