for (int j = 0; j < num; j++) {
b[j] = (int) Math.random() * (high); //产生1到high之间(包括)的随即数
System.out.println(b[j]);//加上这句你就知道为什么了。
}
b[j] = (int) Math.random() * (high); //产生1到high之间(包括)的随即数
System.out.println(b[j]);//加上这句你就知道为什么了。
}
解决方案 »
- hashCode重载时的疑问, prime为啥是31而不是其他? boolean c ? 1231 : 1237又是什么含义?
- 如何在JFrame或JInternalFrame的标题栏中添加自己的按钮,删除系统原有按钮,改变标题栏背景颜色等
- SWT主窗体调整大小时,里面的组件自动跟着主窗体一起调整大小的方法?
- 问java中随机输入参数的实现方法~~谢谢
- 200请大家来说说比较麻烦的Java打包问题(100)
- 来看看这个简单的程序!
- j2sdk1.4.2安装问题,已经搜索过,不知道怎么解决
- 菜鸟的多线程简单问题~~~
- 初学,请教一个关于定义函数返回值类型的问题
- 关于java集合读写的事务性
- 求助!这段代码为什么无法自动登录人人 在线等。。。
- ★☆★问下java里计算日期天数的问题, 100分相送★☆★★☆★★☆★
所以
======================
ottey test=new Lottey();
int k[]=test.lottey(33,7);
for(int x=0;x<k.length;x++)
System.out.println(k[x]);
===========================
应该这样
而且(int)Math.random()*(high);
这样的话永远是0
应该这样(int)(Math.random()*(high)); 整个程序如下
==============================================
import java.util.*;
import java.lang.Math;
public class Lottey
{
public int[] lottey(int high,int num)
{
int[] a=new int[high]; //high 定义一共有多少个数字
int[] b=new int[num]; //num定义要从中选几个数字
for (int i=1;i<=high;i++)
{
a[i-1]=i; //把数组a 从1开始付值
}
for(int j=0;j<num;j++)
{
b[j]=(int)(Math.random()*(high)); //产生1到high之间(包括)的随即数
}
Arrays.sort(b);
return b;
}
public static void main(String[] args)
{
Lottey test=new Lottey();
int k[]=test.lottey(33,7);
for(int x=0;x<k.length;x++)
System.out.println(k[x]);
}
}================================
现在可以正常生成了,可是我如何才能让每个数字只生成一次呢??高手指教啊5555
1.将生成的随机数wrap到integer类中;
2.将integer加入到hashset中;
3.查询set个数,不足循环,等于num时结束
因为integer已经有了equals方法,所以保证hashset中的数都是不同的
a[i-1]=i; //把数组a 从1开始赋值到high
}
for(int j=0;j<num;j++) {
int k = 0;
do {
k = (int)(Math.random()*(high));
}while(a[k-1] != 0);
b[j] = k;
a[k-1] = 0;
}
kalolophoenix(炽火了无痕)深奥了些哈哈我才初学~~感激哈
多谢各位,接贴了!
import java.lang.Math;
public class Lottey
{
public int[] lottey(int high,int num)
{
int[] a=new int[high]; //high 定义一共有多少个数字
int[] b=new int[num]; //num定义要从中选几个数字
int s=0;
for (int i=1;i<=high;i++)
{
a[i-1]=i; //把数组a 从1开始付值
//System.out.println(a[i-1]);
}
for(int j=0;j<num;j++)
{
do{
s=(int)(Math.random()*(high)); //产生1到high之间(包括)的随即数
}while(a[s-1]!=0);
b[j]=s;
a[s-1]=0;
}
Arrays.sort(b);
return b;
}
public static void main(String[] args)
{
Lottey test=new Lottey();
int k[]=test.lottey(30,2);
for(int x=0;x<k.length;x++)
System.out.println(k[x]);
}
}
===========================================
不好意思还要麻烦一下,是死循环啊。555
(Math.random())产生的一个浮点数
将一个float或double值造型成整数值后,总是将小数部分“砍掉”,不作任何进位处理。
s=(int)(Math.random()*(high)); //产生1到high之间(包括)的随即数
}while(a[s-1]!=0);======================
while(a[s-1]==0);
应该这样哈哦呵呵
可以结了哈