C#如何生成一个不重复随机数组

就是抽签如果是从1到10个数字里抽。抽走的就不再进行随机了。请问在C#如果实现,抽到的抛弃,余下的再随机。这样比较公平。... 就是抽签如果是从1到10个数字里抽。抽走的就不再进行随机了。请问在C#如果实现,抽到的抛弃,余下的再随机。这样比较公平。 展开
 我来答
乁Freedom
推荐于2016-01-20 · TA获得超过2128个赞
知道小有建树答主
回答量:1580
采纳率:0%
帮助的人:1416万
展开全部
随机产生数组的下标,不直接产生数,我举随机产生0~9的随机数
int[] num = new int[10];
int[] newNum = new int[10];
int i,r = 9;
int n;
int tmp;
Random rand = new Random();
for (i = 0; i < 10; i++)//初始化这个数组,0~9
{
num[i] = i;
}
///这个算法只需要循环你的数范围的次数而已
for (i = 0; i < 10; i++)
{
n = rand.Next(0, r);//随机产生一个0~9之间的数,r的初始值是9
newNum[i] = num[n];//把产生的随机数当成num的下标赋给newNum数组
tmp = num[n];//然后把num[n]和它最后一个数交换(num[r]),这是避免重复
num[n] = num[r];
num[r] = tmp;
r--;//自减,下次产生的随机数就可以从0到8了,
}
for (i = 0; i < 10; i++)
{
Console.Write("{0} ", newNum[i]);
}
Console.Read();
学盛信伟兆
2019-03-15 · TA获得超过1084个赞
知道小有建树答主
回答量:2052
采纳率:86%
帮助的人:9.6万
展开全部
使用random生成随机数,并将其保存到数组中,待下次生成时,数组循环遍历,看是否已经存在,不存在就取这个值,并保存到数组中,如果存在就重新取随机值,直到不存在为止,循环即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2vedio
2009-05-25 · 超过30用户采纳过TA的回答
知道答主
回答量:156
采纳率:100%
帮助的人:0
展开全部
/// <summary>
/// 返回随机数组
/// </summary>
/// <param name="minValue">最小值</param>
/// <param name="maxValue">最大值</param>
/// <param name="count">个数</param>
/// <returns></returns>
public int[] GetRandomUnrepeatArray(int minValue, int maxValue, int count)
{
Random rnd = new Random();
int length = maxValue - minValue + 1;
byte[] keys = new byte[length];
rnd.NextBytes(keys);
int[] items = new int[length];
for (int i = 0; i < length; i++)
{
items[i] = i + minValue;
}
Array.Sort(keys, items);
int[] result = new int[count];
Array.Copy(items, result, count);
return result;
}
========================
//调用实例
int[] arr = GetRandomUnrepeatArray(1, 10, 10);
for (int i=0; i < arr.Length; i++)
{
Response.Write(arr[i].ToString()+"<br />");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
server126
2009-05-25 · TA获得超过597个赞
知道小有建树答主
回答量:877
采纳率:0%
帮助的人:188万
展开全部
for(int i = 0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式