第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在C#中獲取整數(shù)數(shù)組的隨機列表

在C#中獲取整數(shù)數(shù)組的隨機列表

C#
慕姐4208626 2022-12-24 14:50:13
public static List<int> GetRandom(){    Random rnd = new Random();    List<int> list = new List<int>();    while (list.Count <= 26)    {        int randomNumber = rnd.Next(1, 26);        if (!list.Contains(randomNumber))        {            list.Add(randomNumber);        }    }    return list;}這是我嘗試獲取隨機整數(shù)列表(從 1 到 26)的代碼,但這并沒有返回我想要的結果。這里我想要一個沒有任何重復的隨機 int 數(shù)組。
查看完整描述

4 回答

?
縹緲止盈

TA貢獻2041條經(jīng)驗 獲得超4個贊

那是因為你試圖獲得 1-25 之間的數(shù)字,所以你的代碼永遠不會離開循環(huán)。你應該像這樣隨機調用

int randomNumber = rnd.Next(1, 27);


查看完整回答
反對 回復 2022-12-24
?
白衣非少年

TA貢獻1155條經(jīng)驗 獲得超0個贊

實際上,您想隨機化整數(shù)范圍。你可以使用System.Linq


Random rnd = new Random();

Enumerable.Range(1, 27).OrderBy(_ => rnd.Next())

.NET 小提琴

我什至使用 BenchmarkDotNet 測量和比較兩個解決方案,盡管我很確定,只是作為確認。測量了兩種情況,原始情況和具有 1000 個隨機元素的情況。如果增加元素的數(shù)量,您可能會看到性能下降(這是合乎邏輯的,因為隨著元素數(shù)量的增加,您發(fā)生碰撞的可能性更高)。


BenchmarkDotNet=v0.11.5, OS=Windows 7 SP1 (6.1.7601.0)

Intel Core i7-6700 CPU 3.40GHz (Skylake), 1 CPU, 8 logical and 4 physical cores

Frequency=3328320 Hz, Resolution=300.4519 ns, Timer=TSC

[Host]     : .NET Framework 4.6.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.2650.0

DefaultJob : .NET Framework 4.6.2 (CLR 4.0.30319.42000), 64bit RyuJIT-v4.7.2650.0

n=26


| Method |     Mean |     Error |    StdDev | Rank |

|------- |---------:|----------:|----------:|-----:|

|   Your | 4.463 us | 0.0882 us | 0.1936 us |    2 |

|   Mine | 2.597 us | 0.0235 us | 0.0220 us |    1 |

n=1000


| Method |       Mean |       Error |      StdDev | Rank |

|------- |-----------:|------------:|------------:|-----:|

|   Your | 6,095.8 us | 119.4976 us | 122.7152 us |    2 |

|   Mine |   148.1 us |   0.6086 us |   0.5692 us |    1 |


查看完整回答
反對 回復 2022-12-24
?
紫衣仙女

TA貢獻1839條經(jīng)驗 獲得超15個贊

將方法的外部保持Random為靜態(tài)變量可確保您始終獲得不同的數(shù)字列表,即使您快速連續(xù)多次調用該方法也是如此。


private static Random StaticRandom = new Random();


public static List<int> GetUniqueRandomNumbers_From_1_to_26()

{

    return Enumerable.Range(1, 26).OrderBy(_ => StaticRandom.Next()).ToList();

}

使用示例:


Console.WriteLine(String.Join(", ", GetUniqueRandomNumbers_From_1_to_26()));

輸出:


26, 19, 22, 24, 16, 20, 5, 1, 8, 6, 10, 14, 13, 18, 15, 12, 25, 2, 4, 9, 21, 7, 23, 11, 3, 17


查看完整回答
反對 回復 2022-12-24
?
回首憶惘然

TA貢獻1847條經(jīng)驗 獲得超11個贊

作為替代方案,您可以使用MathNet.Numerics庫:


PM> 安裝包 MathNet.Numerics


public static List<int> GetRandom()

{

    var arr = Combinatorics.GeneratePermutation(25);

    return new List<int>(arr);

}

您可能需要加 1,因為它會生成從零開始的數(shù)組。


這是相關文件:


通過生成索引號 0 到 N-1 并隨機打亂它們來生成隨機排列,不重復。使用 Fisher-Yates Shuffling 實現(xiàn)。


查看完整回答
反對 回復 2022-12-24
  • 4 回答
  • 0 關注
  • 123 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號