C# 如何生成数组中从不重复的随机数? listBox1.Items.Clear(); int[]sayısal=新int[6]; Random rastgele=新的Random(); 对于(int i=0;i
当我这样做的时候,我犯了一个错误 “无法将类型“int”隐式转换为“int[]”” 在第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
行中“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;