Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何生成数组中从不重复的随机数? listBox1.Items.Clear(); int[]sayısal=新int[6]; Random rastgele=新的Random(); 对于(int i=0;i_C#_Arrays_Random - Fatal编程技术网

C# 如何生成数组中从不重复的随机数? listBox1.Items.Clear(); int[]sayısal=新int[6]; Random rastgele=新的Random(); 对于(int i=0;i

C# 如何生成数组中从不重复的随机数? listBox1.Items.Clear(); int[]sayısal=新int[6]; Random rastgele=新的Random(); 对于(int i=0;i,c#,arrays,random,C#,Arrays,Random,当我这样做的时候,我犯了一个错误 “无法将类型“int”隐式转换为“int[]”” 在第行中“sayısal=rastgele.Next(1,50);”。我能做些什么呢?因为方法返回的是int,而不是int[]。从int[]到int之间没有隐含的关联 listBox1.Items.Clear(); int[] sayısal = new int[6]; Random rastgele = new Random(); for (int i = 0; i < 6; i++) { do

当我这样做的时候,我犯了一个错误

“无法将类型“int”隐式转换为“int[]””

在第
行中“sayısal=rastgele.Next(1,50);”
。我能做些什么呢?

因为方法返回的是
int
,而不是
int[]
。从
int[]
int
之间没有隐含的关联

listBox1.Items.Clear();
int[] sayısal = new int[6];
Random rastgele = new Random();
for (int i = 0; i < 6; i++)
{
   do
   {
      sayısal = rastgele.Next(1, 50);
   }
   while (listBox1.Items.IndexOf(sayısal) != -1);
      listBox1.Items.Add(sayısal);
}
如果要填充数组,可以使用
Enumerable.Range
like.

,因为方法返回的是
int
,而不是
int[]
。从
int[]
int
之间没有隐含的关联

listBox1.Items.Clear();
int[] sayısal = new int[6];
Random rastgele = new Random();
for (int i = 0; i < 6; i++)
{
   do
   {
      sayısal = rastgele.Next(1, 50);
   }
   while (listBox1.Items.IndexOf(sayısal) != -1);
      listBox1.Items.Add(sayısal);
}

如果要填充数组,可以使用
可枚举.Range
like.

您可以生成序列
1..50
并将其洗牌(即按随机值排序):


您的代码不起作用,因为您正试图将生成的项分配给数组变量

Random rastgele = new Random();
int[] sayısal = Enumerable.Range(1, 50) // generate sequence
                          .OrderBy(i => rastgele.Next()) // shuffle
                          .Take(6) // if you need only 6 numbers
                          .ToArray(); // convert to array
它应该是:

sayısal = rastgele.Next(1, 50);

正如我在评论中指出的,最好将UI逻辑和数组生成分开。即

do {
   sayısal[i] = rastgele.Next(1, 50);
} while(listBox1.Items.IndexOf(sayısal[i]) != -1);
//生成数组(可以选择移动到单独的方法)
int itemscont=6;
int[]items=新int[itemsCount];//考虑使用列表
随机=新随机();
国际项目;
对于(int i=0;i=0);
项目[i]=项目;
}
//显示生成的项目
listBox1.Items.Clear();
for(inti=0;i
您可以生成序列
1..50
并将其洗牌(即按随机值排序):


您的代码不起作用,因为您正试图将生成的项分配给数组变量

Random rastgele = new Random();
int[] sayısal = Enumerable.Range(1, 50) // generate sequence
                          .OrderBy(i => rastgele.Next()) // shuffle
                          .Take(6) // if you need only 6 numbers
                          .ToArray(); // convert to array
它应该是:

sayısal = rastgele.Next(1, 50);

正如我在评论中指出的,最好将UI逻辑和数组生成分开。即

do {
   sayısal[i] = rastgele.Next(1, 50);
} while(listBox1.Items.IndexOf(sayısal[i]) != -1);
//生成数组(可以选择移动到单独的方法)
int itemscont=6;
int[]items=新int[itemsCount];//考虑使用列表
随机=新随机();
国际项目;
对于(int i=0;i=0);
项目[i]=项目;
}
//显示生成的项目
listBox1.Items.Clear();
for(inti=0;i
此方法采用整数数组并随机排序。 因此,用循环填充一个数组,然后使用它对数组进行随机排序。 你应该相信其他人,因为他们是第一个发布有效答案的人。我只是想用另一种方法做这件事会很好

amount是希望数组随机化的次数。数字越大,随机数字出现的几率越高

// generate array (optionally move to separate method)
int itemsCount = 6;
int[] items = new int[itemsCount]; // consider to use List<int>
Random random = new Random();
int item;

for(int i = 0; i < itemsCount; i++)
{
   do {
      item = random.Next(1, 50);
   } while(Array.IndexOf(items, item) >= 0);

   items[i] = item;
}

// display generated items
listBox1.Items.Clear();
for(int i = 0; i < items.Length; i++) // or use foreach
    listBox1.Items.Add(items[i]);
private Random=new Random();
私有整数[]随机数(整数[]i,整数金额)
{
int L=i.长度-1;
int c=0;
int r=随机。下一个(金额);
int prev=0;
int电流=0;
内部温度;
while(c
此方法采用整数数组并随机排序。 因此,用循环填充一个数组,然后使用它对数组进行随机排序。 你应该相信其他人,因为他们是第一个发布有效答案的人。我只是想用另一种方法做这件事会很好

amount是希望数组随机化的次数。数字越大,随机数字出现的几率越高

// generate array (optionally move to separate method)
int itemsCount = 6;
int[] items = new int[itemsCount]; // consider to use List<int>
Random random = new Random();
int item;

for(int i = 0; i < itemsCount; i++)
{
   do {
      item = random.Next(1, 50);
   } while(Array.IndexOf(items, item) >= 0);

   items[i] = item;
}

// display generated items
listBox1.Items.Clear();
for(int i = 0; i < items.Length; i++) // or use foreach
    listBox1.Items.Add(items[i]);
private Random=new Random();
私有整数[]随机数(整数[]i,整数金额)
{
int L=i.长度-1;
int c=0;
int r=随机。下一个(金额);
int prev=0;
int电流=0;
内部温度;
while(c
在选择数据结构和算法时要小心,选择错误的数据结构和算法,最终会得到O(n^2)。合理的解决方案IMHO是一个类型化哈希表(即字典),它将为您提供O(n):

Random rnd=new Random();
变量编号=可枚举
.范围(1100万)
.Aggregate(新字典(),(a,b)=>{
int-val;
do{val=rnd.Next();}while(a.ContainsKey(val));
a、 添加(val,val);
返回a;
})
价值观
.ToArray();

但仍然不理想,因为性能取决于数组大小明显小于可用数字集,并且无法检测何时不满足此条件(或者更糟糕的是,当它更大时,算法将进入无限循环)。

在选择数据结构和算法时要小心,选错一个,你会得到O(n^2)。合理的解决方案IMHO是一个类型化哈希表(即字典),它将为您提供O(n):

Random rnd=new Random();
变量编号=可枚举
.范围(1100万)
.Aggregate(新字典(),(a,b)=>{
int-val;
do{val=rnd.Next();}while(a.ContainsKey(val));
a、 添加(val,val);
返回a;