我目前正在嘗試創建一個程序,生成1到45之間的隨機數字,沒有重複。我的程序在我沒有else語句的情況下運行時,只要出現重複,它會輸入數字0,當我使用else語句時,函數就會中斷。我想要顯示1到45之間的隨機數字,但變量大小必須指定數組的大小。對於具有35c#隨機數發生器陣列中沒有重複
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace RandomArray
{
public class RandomArrayNoDuplicates
{
static void Main(string[] args)
{
int size = 45;
int[] noDuplicateArray = new int[size];
noDuplicateArray = InitializeArrayWithNoDuplicates(size);
DisplayArray(noDuplicateArray);
ExitProgram();
} //end Main
static Random rng = new Random();
/// <summary>
/// Creates an array with each element a unique integer
/// between 1 and 45 inclusively.
/// </summary>
/// <param name="size"> length of the returned array < 45
/// </param>
/// <returns>an array of length "size" and each element is
/// a unique integer between 1 and 45 inclusive </returns>
///
static void ExitProgram()
{
Console.Write("\n\nPress any key to exit program: ");
Console.ReadKey();
}//end ExitProgram
public static int[] InitializeArrayWithNoDuplicates(int size)
{
int number;
int[] noDuplicates = new int[size];
for (int i = 0; i < size; i++)
{
number = rng.Next(1, size);
if (!noDuplicates.Contains(number))
noDuplicates[i] = number;
// else
// i--;
}
return noDuplicates;
}
static void DisplayArray(int[] noDuplicates)
{
foreach (int element in noDuplicates)
{
Console.Write("\t" + element + "\n");
}
}
}
}
數組大小爲1和45之間例如隨機整數的問題就在於此位代碼:
public static int[] InitializeArrayWithNoDuplicates(int size)
{
int number;
int[] noDuplicates = new int[size];
for (int i = 0; i < size; i++)
{
number = rng.Next(1, size);
if (!noDuplicates.Contains(number))
noDuplicates[i] = number;
// else
// i--;
}
return noDuplicates;
,但我不能確定如何解決它。我寧願使用random.next函數,而不是使用enumberable方法。感謝
到底是什麼問題? – Blacktempel