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

C#?生成隨機數(shù)的方法示例

 更新時間:2024年12月17日 08:39:41   作者:咱們不氣  
本文介紹了C#中的Random類,用于生成隨機數(shù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

C# 提供了一種強大而方便的工具類 Random ,用于生成隨機數(shù)。這里將分類討論如何通過 C# 實現(xiàn)隨機數(shù)生成,以及應(yīng)用于實際情況中的一些具體方案。

一、Random 類概述

Random 類表示一個偽隨機數(shù)生成器,用于生成滿足隨機性統(tǒng)計要求的數(shù)字序列。

重載的 Random.Next()

Random.Next() 方法提供了三種重載:

  • Next():生成大于等于 0 且小于 Int32.MaxValue 的 32 位整數(shù)。

  • Next(int minValue, int maxValue):生成從 minValue (包括) 到 maxValue (不包括) 的整數(shù)。

示例

/// <summary>
/// 生成隨機數(shù)列表
/// </summary>
/// <returns></returns>
public List<int> RDNumber()
{
    List<int> col = new List<int>();
    for (int i = 0; i < 6; i++)
    {
        Random rd = new Random(); // 初始化一個新的 Random 實例
        var a = rd.Next();        // 生成一個隨機數(shù)
        col.Add(a);
    }
    return col;
}

二、生成不重復(fù)的隨機數(shù)

方法一:利用 List 根據(jù)重復(fù)狀態(tài)迭代

通過檢查隨機數(shù)是否存在,防止重復(fù):

/// <summary>
/// 指定范圍內(nèi)的不重復(fù)隨機數(shù)(要求隨機數(shù)個數(shù)小于隨機數(shù)范圍否則程序會陷入死循環(huán)??稍谘h(huán)中加入跳出機制)
/// </summary>
/// <param name="Number">隨機數(shù)個數(shù)</param>
/// <param name="minNum">隨機數(shù)下限</param>
/// <param name="maxNum">隨機數(shù)上限</param>
/// <returns></returns>
public List<int> GetRandomArray(int Number, int minNum, int maxNum)
{
    int j;
    List<int> b = new List<int>();
    Random r = new Random();
    for (j = 0; j < Number; j++)
    {
        int i = r.Next(minNum, maxNum + 1);
        if (b.Contains(i))  //是否包含這個數(shù)
        {
            j = j - 1;
        }
        else
        {
            b.Add(i);
        }
    }
    return b;
}

方法二:使用索引替換

思想是用一個數(shù)組來保存索引號,先隨機生成一個數(shù)組位置,然后把隨機抽取到的位置的索引號取出來,并把最后一個索引號復(fù)制到當前的數(shù)組位置,然后使隨機數(shù)的上限減一,具體如:先把這100個數(shù)放在一個數(shù)組內(nèi),每次隨機取一個位置(第一次是1-100,第二次是1-99,...),將該位置的數(shù)用最后的數(shù)代替。 

int[] index = new int[15];
for (int i = 0; i < 15; i++)
    index[i] = i;
Random r = new Random();
//用來保存隨機生成的不重復(fù)的10個數(shù)
int[] result = new int[10];
int site = 15;//設(shè)置上限
int id;
for (int j = 0; j < 10; j++)
{
    id = r.Next(1, site - 1);
    //在隨機位置取出一個數(shù),保存到結(jié)果數(shù)組
    result[j] = index[id];
    //最后一個數(shù)復(fù)制到當前位置
    index[id] = index[site - 1];
    //位置的上限減少一
    site--;
}

三、生成字母數(shù)字的隨機組合

這里先說一下說一下ASCII:ASCII(American Standard Code for Information Interchange, 美國標準信息交換代碼)是基于拉丁字母的一套電腦編碼系統(tǒng),主要 用于顯示現(xiàn)代英語和其他西歐語言。它是現(xiàn)今最通用的單字節(jié)編碼 系統(tǒng),并等同于國際標準ISO/IEC 646。

ASCII 系統(tǒng)概述

  • 大寫字母 A-Z 的 ASCII 值范圍為 65-90

  • 小寫字母 a-z 的 ASCII 值范圍為 97-122

示例代碼

/// <summary>
/// 生成單個隨機數(shù)字
/// </summary>
public int createNum(Random random)
{
    int num = random.Next(10);
    return num;
}
/// <summary>
/// 生成單個大寫隨機字母
/// </summary>
public string createBigAbc(Random random)
{
    //A-Z的 ASCII值為65-90
    int num = random.Next(65, 91);
    string abc = Convert.ToChar(num).ToString();
    return abc;
}
/// <summary>
/// 生成單個小寫隨機字母
/// </summary>
public string createSmallAbc(Random random)
{
    //a-z的 ASCII值為97-122
    int num = random.Next(97, 123);
    string abc = Convert.ToChar(num).ToString();
    return abc;
}

生成隨機字母數(shù)字組合

/// <summary>
/// 生成隨機字母數(shù)字組合
/// </summary>
/// <returns></returns>
public string GetRandom()
{
    Random random = new Random();
    //創(chuàng)建一個StringBuilder對象存儲密碼
    StringBuilder sb = new StringBuilder();
    //使用for循環(huán)把單個字符填充進StringBuilder對象里面變成14位密碼字符串
    for (int i = 0; i < 14; i++)
    {
        //隨機選擇里面其中的一種字符生成
        switch (random.Next(3))
        {
            case 0:
                //調(diào)用生成生成隨機數(shù)字的方法
                sb.Append(createNum(random));
                break;
            case 1:
                //調(diào)用生成生成隨機小寫字母的方法
                sb.Append(createSmallAbc(random));
                break;
            case 2:
                //調(diào)用生成生成隨機大寫字母的方法
                sb.Append(createBigAbc(random));
                break;
        }
    }
    return sb.ToString();
}

到此這篇關(guān)于C# 生成隨機數(shù)的方法的文章就介紹到這了,更多相關(guān)C# 生成隨機數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • 基于WPF實現(xiàn)簡單的文件夾比較工具

    基于WPF實現(xiàn)簡單的文件夾比較工具

    文件比較平常都是用Beyond?Compare,可以說離不開的神器,不過Beyond?Compare平常拿它主要是用來做代碼比較,用來做一些大批量的二進制文件比較,其實有點不是很方便,所以本文來用WPF做一個簡單的文件夾比較的小工具
    2023-05-05
  • C#不提升自己程序的權(quán)限實現(xiàn)操作注冊表

    C#不提升自己程序的權(quán)限實現(xiàn)操作注冊表

    這篇文章主要介紹了C#不提升自己程序的權(quán)限實現(xiàn)操作注冊表的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • 基于WPF實現(xiàn)數(shù)字框控件

    基于WPF實現(xiàn)數(shù)字框控件

    這篇文章主要介紹了如何利用WPF實現(xiàn)數(shù)字框控件,文中的示例代碼講解詳細,對我們學(xué)習(xí)或工作有一定的幫助,需要的小伙伴可以參考一下
    2023-08-08
  • C#多線程之取消架構(gòu)介紹

    C#多線程之取消架構(gòu)介紹

    這篇文章介紹了C#多線程之取消架構(gòu),文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • C#創(chuàng)建數(shù)據(jù)庫及附加數(shù)據(jù)庫的操作方法

    C#創(chuàng)建數(shù)據(jù)庫及附加數(shù)據(jù)庫的操作方法

    這篇文章主要介紹了C#創(chuàng)建數(shù)據(jù)庫及附加數(shù)據(jù)庫的操作方法,涉及C#針對數(shù)據(jù)庫常見的創(chuàng)建、添加、連接等操作技巧,需要的朋友可以參考下
    2016-06-06
  • 利用C#編寫Linux守護進程實例代碼

    利用C#編寫Linux守護進程實例代碼

    如今的編程是一場程序員和上帝的競賽,程序員要開發(fā)出更大更好、傻瓜都會用到軟件,下面這篇文章主要給大家介紹了關(guān)于利用C#編寫Linux守護進程的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2018-01-01
  • C# Winform 子窗體訪問父級窗體的控件和屬性

    C# Winform 子窗體訪問父級窗體的控件和屬性

    本文主要介紹兩種子窗體訪問父窗體控件和屬性的方法,大家可以參考一下,本人比較偏向第二種,把父窗體作為屬性傳遞,一勞永逸,想訪問父窗體的什么控件屬性都可以。
    2016-05-05
  • C#實現(xiàn)自動填充文字內(nèi)容到指定圖片

    C#實現(xiàn)自動填充文字內(nèi)容到指定圖片

    這篇文章主要為大家詳細介紹了如何使用C#實現(xiàn)自動填充文字內(nèi)容到指定圖片,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • C#利用反射技術(shù)實現(xiàn)去掉按鈕選中時的邊框效果

    C#利用反射技術(shù)實現(xiàn)去掉按鈕選中時的邊框效果

    這篇文章主要介紹了C#利用反射技術(shù)實現(xiàn)去掉按鈕選中時的邊框效果,涉及C#針對窗口的參數(shù)設(shè)置技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • 使用C#創(chuàng)建Windows服務(wù)的實例代碼

    使用C#創(chuàng)建Windows服務(wù)的實例代碼

    這篇文章主要介紹了使用C#創(chuàng)建Windows服務(wù)的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論