黑马程序员技术交流社区
标题:
怎么随机产生十个数
[打印本页]
作者:
苟于伟
时间:
2013-4-23 10:30
标题:
怎么随机产生十个数
随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。
我是0基础的,通过Random只能new一个数,而不能产生一个数组,求高人指点。。。
例如:
static void Main(string[] args)
{
Random r = new Random();//通过Random方法可以产生随机数
while (true)
{
int i = r.Next(1, 7);//产生的随机数永远大于等于最小值,小于最大值
Console.WriteLine(i);
复制代码
作者:
熊鑫
时间:
2013-4-23 11:04
定义一个数组。然后用for循环10次。
作者:
林东枫
时间:
2013-4-23 11:55
ArrayList list = new ArrayList();
Random rd = new Random();
//接受随机数对象产生的数
int num;
//判断是否在ArrayList找到相同的数字,找到则为true,否则为false;
bool find = false;
//判断list里面是不是已经有10个数了,够10个数字则不在运行
while(list.Count<10)
{
//产生随机数
num = rd.Next(1, 101);
//判断概数是否为偶数
if (num % 2 == 0)
{
//查找该数是否已存在数组list中
for (int j= 0; j < list.Count; j++)
{
if (num == Convert.ToInt32( list[j]))
{
find = true;
break;
}
}
//不存在,则添加到数组list去
if (!find)
{
list.Add(num);
find = false;
}
}
}
Console.WriteLine("随机产生的10个偶数如下:");
for (int i = 0; i < list.Count; i++)
{
Console.Write("{0} ",list[i]);
}
Console.ReadKey();
复制代码
这是我刚才写的程序 你看一下 希望对你有帮助
有疑问的地方 可以一起探讨
作者:
王德钊
时间:
2013-4-23 12:19
看看我刚写的吧。直接写的。也没写什么方法,怕你看不懂,耦合的地方暂时先忽略不计吧
static void Main(string[] args)
{
ArrayList list = new ArrayList();
#region 初始集合时,往里面加一个偶数
while (true)
{
Random ran = new Random();
int x = ran.Next(1, 101);
if (x % 2 == 0)
list.Add(x);
break;
}
#endregion
#region 循环添加不同偶数
while (true)
{
if (list.Count == 10)//当集合内数字为10跳出循环
break;
Random ran1 = new Random();
int y = ran1.Next(1, 101);
if (!list.Contains(y) && (y % 2 == 0))//当集合内不包含这个随机数企鹅这个数字为偶数时添加到集合内
list.Add(y);
else
continue;
}
#endregion
foreach (int i in list)
{
Console.WriteLine(i);
}
Console.ReadKey();
}
复制代码
作者:
风雪再现
时间:
2013-4-23 13:18
static void Main(string[] args)
{
//随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。
int[] ArrayList = new int[10];
Random r = new Random();
for (int i = 0; i < 10; i++)
{
while (ArrayList[i] == 0)
{
int num = r.Next(1, 101); //产生随机数
if (num % 2 == 0)//判断是否为偶数
{
for (int j = 0; j < i; j++)//判断新产生的随机数和之前产生的是否重复
{
if (num == ArrayList[j])
{
break;
}
}
ArrayList[i] = num;//既是偶数又不和前面的重复时,加入数组中
}
else
{
continue;
}
}
}
foreach (int i in ArrayList)//循环输出数组的值
{
Console.WriteLine(i);
}
Console.ReadKey();
}
复制代码
希望对你有用
作者:
苟于伟
时间:
2013-4-24 10:17
风雪再现 发表于 2013-4-23 13:18
希望对你有用
可还有重复的数啊
作者:
风雪再现
时间:
2013-4-24 10:57
苟于伟 发表于 2013-4-24 10:17
可还有重复的数啊
我测试过,没有重复数的
作者:
陈晖
时间:
2013-4-24 11:17
用HashTable来存放,达到是个停止可以避免重复这个漏洞。
作者:
秦二江
时间:
2013-4-24 15:34
static void Main(string[] args)
{
//随机生成10个1-100之间的数放到ArrayList中,要求这10个数不能重复,并且都是偶数。
//定义一个可变数组
ArrayList arr = new ArrayList();
//定义随机数实例r
Random r = new Random();
int sum = 0;
//while循环 用于获取 10个不同的随机数
while (sum < 10)
{
// 定义变量 number 接收随机数
int number = r.Next(1, 100);
// if 用于偶数的过滤
if (number % 2 == 0)
{
//只有第一次 while 循环 arr 中 肯定不会有 重复,直接将 number 加进 arr
if (sum <= 0)
{
arr.Add(number);
sum++;
}
else // 第一次以后的 循环 存在 重复的可能性
{
//便利 arr 中的每一个元素
for (int i = 0; i < arr.Count; i++)
{
// 如果 本次循环产生的随机数在 arr 中 已有 则 不在添加到 arr
if (number == Convert.ToInt32(arr[i]))
{
// 存在重复 用 goto 跳转到 aa 标签,不在执行 添加 语句 arr.Add(number);
goto aa;
}
}
arr.Add(number);
sum++;
aa: ;
}
}
}
// 遍历输出 arr 中的元素
foreach (int read in arr)
{
Console.Write(read+" ");
}
}
作者:
麦田稻草
时间:
2014-3-14 10:09
风雪再现 发表于 2013-4-23 13:18
希望对你有用
我测试了一下有重复的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2