随机数问题
ArrayList chanshengxuhao;//随机产生序号Random suijixulie = new Random();//产生的随机序列
chanshengxuhao = new ArrayList(5);
for (int i = 0; i < yaohaorenshu; i++)
{
chanshengxuhao.Add(suijixulie.Next(1,6));
}
foreach (var item in chanshengxuhao)
{
this.txtNumber.Text += item.ToString() + " ";
}
这样每次随机出来的数据有重复的,怎么避免呢,谢谢!
比如出来就是下面的数据
3 5 1 3 3 random --------------------编程问答-------------------- this.txtNumber.Text = string.Join(" ", Enumerable.Range(1, 5).OrderBy(x => Guid.NewGuid().ToString()).Select(x => x.ToString()).ToArray()); --------------------编程问答-------------------- 别的语句乱七八糟的都不要了。 --------------------编程问答--------------------
int[] rs = Enumerable.Range(1, 5).OrderBy(x => Guid.NewGuid()).ToArray();--------------------编程问答-------------------- Random.Next返回的是整数,1~6数字太少,重复的可能性就大了,你生成6个以上数字必定有至少一对重复,
foreach (int r in rs)
Console.WriteLine(r);
你可以用Random.NextDouble可以返回浮点数,重复可能性不大, --------------------编程问答--------------------
Enumerable.Range(1, 5).OrderBy(t => Guid.NewGuid()).ToList().ForEach(t => Console.WriteLine(t));--------------------编程问答-------------------- ArrayList chanshengxuhao;//随机产生序号
Random suijixulie = new Random();//产生的随机序列
chanshengxuhao = new ArrayList(5);
for (int i = 0; i < yaohaorenshu; )
{
int ran = suijixulie.Next(1,6);
if(chanshengxuhao.Contains(ran)
{
continue;
}
chanshengxuhao.Add(ran );
i++;
}
foreach (var item in chanshengxuhao)
{
this.txtNumber.Text += item.ToString() + " ";
} --------------------编程问答--------------------
4楼正解 --------------------编程问答-------------------- 谢谢各位大力支持,谢谢!我有个新的想法,就是假如现在,1-500,共500个数,我需要每次随机选出50个,每次选了50个以后,原来的那500个就依次减少50,再从中选出50,知道结束,该如何写程序呢,谢谢! --------------------编程问答--------------------
var list = Enumerable.Range(1, 500).OrderBy(t => Guid.NewGuid()).Select((t, index) => new { value = t, index = index }).GroupBy(t => t.index / 50).Select(t => t.Select(tt => tt.value).ToList()).ToList();
--------------------编程问答-------------------- 用递归。。。。。 --------------------编程问答--------------------
我修改成这样:this.txtNumber.Text = string.Join(" ", Enumerable.Range(1, 500).OrderBy(t => Guid.NewGuid().ToString()).Select((t, index) => new { value = t, index = index }).GroupBy(t => t.index / 50).Select(t => t.Select(tt => tt.value).ToString()).ToArray());
怎么不行呢?谢谢 --------------------编程问答--------------------
那个list是List<List<int>>,一共十组,每组50个数 --------------------编程问答-------------------- 应该可以转换出来吧! --------------------编程问答--------------------
什么跟什么,,,照这样来改。。。
补充:.NET技术 , C#