欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#生成互不相同隨機數(shù)的實現(xiàn)方法

 更新時間:2014年09月02日 09:35:31   投稿:shichen2014  
這篇文章主要介紹了C#生成互不相同隨機數(shù)的實現(xiàn)方法,文中詳細(xì)描述了C#生成互不相同隨機數(shù)的各個步驟及所用到的函數(shù),非常具有借鑒價值,需要的朋友可以參考下

本文實例講述了C#生成互不相同隨機數(shù)的實現(xiàn)方法,在進(jìn)行C#應(yīng)用程序設(shè)計時非常具有實用價值。本文詳細(xì)講述了其功能的實現(xiàn)過程。分享給大家供大家參考之用。具體方法如下:

一般來說,用C#生成足夠隨機的互不相同的隨機數(shù) Dotnet.Frameword中提供了一個專門產(chǎn)生隨機數(shù)的類System.Random,計算機并不能產(chǎn)生完全隨機的數(shù)字,它生成的數(shù)字被稱為偽隨機數(shù),它是以相同的概率從一組有限的數(shù)字中選取的,所選的數(shù)字并不具有完全的隨機性,但就實用而言,其隨機程度已經(jīng)足夠了。

在使用隨機數(shù)時,要先初始化一個隨機數(shù)發(fā)生器.有兩種方法;

第一種方法不指定隨機種子,系統(tǒng)自動選取當(dāng)前時前作隨機種子:

Random ra=new Random();

第二種方法是指定一個int型的參數(shù)作為隨機種子:

Random ra=new Random(int iseed);

初始化完成后,用Random.Next()方法產(chǎn)生隨機數(shù)。
ra.Next(); 它返回一個大于或等于零而小于2,147,483,647的數(shù).
 
下面我們介紹它的重載函數(shù)和其它一些方法。

public virtual int Next(int);

用法:ra.next(20) 返回一個小于所指定最大值(此處為20)的正隨機數(shù)。

public virtual int Next(int minValue, int maxValue);

用法:ra.next(1,20) 返回一個指定范圍內(nèi)(此處為1-20之間)的隨機數(shù).

類System.Random還有幾個方法分別是:

公共方法: NextBytes用隨機數(shù)填充指定字節(jié)數(shù)組的元素。
NextDouble返回一個介于 0.0 和 1.0 之間的隨機數(shù)。

受保護(hù)的方法: Sample返回一個介于 0.0 和 1.0 之間的隨機數(shù),只允許子類對象訪問。
要在一段數(shù)字區(qū)間內(nèi)隨機生成若干個互不相同的隨機數(shù),比如在從1到20間隨機生成6個互不相同的整數(shù)。

可以參考下面兩個函數(shù): differSamenessRandomNum與getRandomNum:

public int[] differSamenessRandomNum(int num,int minValue,int maxValue) //在區(qū)間[minValue,maxValue]取出num個互不相同的隨機數(shù),返回數(shù)組。
{
Random ra=new Random(unchecked((int)DateTime.Now.Ticks));//保證產(chǎn)生的數(shù)字的隨機性
int[] arrNum=new int[num];
int tmp=0;
for (int i=0;i>=num-1;i++) {
tmp=ra.Next(minValue,maxValue); //隨機取數(shù) 
arrNum[i]=get RandomNum(arrNum,tmp,minValue,maxValue,ra); //取出值賦到數(shù)組中 
}
return arrNum;
}

函數(shù)getNum是一遞歸,用它來檢測生成的隨機數(shù)是否有重復(fù),如果取出來的數(shù)字和已取得的數(shù)字有重復(fù)就重新隨機獲取。

public int getRandomNum(int[] arrNum,int tmp,int minValue,int maxValue,Random ra)
{
int n=0; 
while (n>=arrNum.Length-1)
{
if (arrNum[n]==tmp) //利用循環(huán)判斷是否有重復(fù)
{
tmp=ra.Next(minValue,maxValue); //重新隨機獲取。
getRandomNum(arrNum,tmp,minValue,maxValue,ra); //遞歸:如果取出來的數(shù)字和已取得的數(shù)字有重復(fù)就重新隨機獲取。
}
n++;
}
return tmp; 
}

相信本文所述對大家的C#程序設(shè)計有一定的借鑒價值。

相關(guān)文章

  • C#中ManualResetEvent用法詳解

    C#中ManualResetEvent用法詳解

    這篇文章主要為大家詳細(xì)介紹了C#中ManualResetEvent用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • c# Linq常用的小技巧

    c# Linq常用的小技巧

    這篇文章主要介紹了c# Linq常用的小技巧,文中講解非常詳細(xì),示例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • 基于C#實現(xiàn)Ping工具類

    基于C#實現(xiàn)Ping工具類

    Ping是一種常用的測試網(wǎng)絡(luò)連接的工具,可以測試網(wǎng)絡(luò)延遲和連接狀況,以及判斷網(wǎng)絡(luò)是否可用,本文將通過框架類庫中的Ping類來實現(xiàn)Ping功能,感興趣的小伙伴可以了解下
    2023-11-11
  • 關(guān)于C#?dynamic裝箱問題

    關(guān)于C#?dynamic裝箱問題

    裝箱是將值類型轉(zhuǎn)換為類型對象或此值類型實現(xiàn)的任何接口類型的過程,裝箱和拆箱的概念是 C# 類型系統(tǒng)統(tǒng)一視圖的基礎(chǔ),其中任何類型的值都可以視為對象,這篇文章主要介紹了關(guān)于C#?dynamic裝箱引發(fā)的思考,需要的朋友可以參考下
    2022-05-05
  • C#實現(xiàn)調(diào)用迅雷下載的方法

    C#實現(xiàn)調(diào)用迅雷下載的方法

    這篇文章主要介紹了C#實現(xiàn)調(diào)用迅雷下載的方法,非常實用的一個技巧,對于進(jìn)行C#程序設(shè)計有很好的借鑒價值,需要的朋友可以參考下
    2014-08-08
  • C#中System.IO.Pipelines庫的使用詳解

    C#中System.IO.Pipelines庫的使用詳解

    System.IO.Pipelines 是一個庫,旨在使在 .NET 中執(zhí)行高性能 I/O 更加容易,本文主要為大家詳細(xì)介紹了System.IO.Pipelines具體使用方法,感興趣的可以了解下
    2023-12-12
  • CPF?使用C#的Native?AOT?發(fā)布程序的詳細(xì)過程

    CPF?使用C#的Native?AOT?發(fā)布程序的詳細(xì)過程

    這篇文章主要介紹了CPF?使用C#的Native?AOT?發(fā)布程序,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具體一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 基于WPF實現(xiàn)帶明細(xì)的環(huán)形圖表

    基于WPF實現(xiàn)帶明細(xì)的環(huán)形圖表

    這篇文章主要介紹了如何利用WPF繪制帶明細(xì)的環(huán)形圖表?,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,需要的可以參考一下
    2022-08-08
  • C#實現(xiàn)批量Word轉(zhuǎn)換Html的示例代碼

    C#實現(xiàn)批量Word轉(zhuǎn)換Html的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C#批量Word轉(zhuǎn)換Html的功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#如何對多線程、多任務(wù)管理(demo)

    C#如何對多線程、多任務(wù)管理(demo)

    這篇文章主要通過一個小demo介紹了C#如何對多線程、多任務(wù)管理,需要的朋友可以參考下
    2015-07-07

最新評論