锁定老帖子 主题:JAVA每日一题01
精华帖 (0) :: 良好帖 (5) :: 新手帖 (2) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-11
最后修改:2009-03-23
还是我来继续jythoner的JAVA每日一题吧!最近比较闲哦!希望jythone不要见怪哦! 真是不好意思啊!早上有点忙!呵呵!
题目:一项抽奖程序要求读者从整数1-49之间选择6个不同的数字。编写一个程序来完成这项工作,并生成5组结果。
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-03-23
import java.util.Arrays; import java.util.Random; public class Lottery { private Random rand = new Random(); private int[] numbers; public Lottery(int range) { numbers = new int[range]; for(int i=0; i<numbers.length; i++) numbers[i] = i+1; } private void swap(int i, int j) { if(i==j) return; int x = numbers[i]; numbers[i] = numbers[j]; numbers[j] = x; } public int[] randomChoose(int setSize) { int[] rt = new int[setSize]; for(int i=0; i<setSize; i++) { int chosenIndex = rand.nextInt(numbers.length-i); rt[i] = numbers[chosenIndex]; swap(chosenIndex, numbers.length-1-i); } return rt; } public static void main(String[] args) { Lottery l = new Lottery(49); for(int i=0; i<5; i++) System.out.println(Arrays.toString(l.randomChoose(6))); } } |
|
返回顶楼 | |
发表时间:2009-04-08
不是很明白楼主的意思,一个人猜六次?怎么没显示正确的结果呢??
|
|
返回顶楼 | |
发表时间:2009-04-15
每次运行一下LZ这个程序去买双色球
|
|
返回顶楼 | |
发表时间:2009-04-15
三楼为什么要swap一下?
|
|
返回顶楼 | |
发表时间:2009-04-15
最后修改:2009-04-22
路过...
改了下,更傻的版本如下: module Main where import Random import Data.List main = do f []; f []; f []; f []; f [] where f li |length li == 6 = print li |otherwise = do n <- randomRIO (1::Int, 49) if elem n li then f li else f (n:li) |
|
返回顶楼 | |
发表时间:2009-04-17
最后修改:2009-04-17
#include <iostream> #include <math.h> #include <time.h> using namespace std; #define MAX 49 #define PUTVALUE 6 int number[MAX]; int putDigit[PUTVALUE]; void init() { for(int i = 0;i < MAX;i++) { number[i] = i+1; } } void _test() { static int t = 0; init(); int gg[100] = {0}; for(int i = 0;i <PUTVALUE;) { int flag = t; srand(time(NULL)); t = rand()%50; while(flag == t) { srand(time(NULL)); t = rand()%50; } //排重 for(int j = 0;j < 50;j++) { while(t == gg[j]) { gg[j] = 0; srand(time(NULL)); t = rand()%50; } } gg[i] = t; putDigit[i] = number[t]; cout<<putDigit[i]<<" "; i++; } cout<<endl; } int main() { for(int j = 0;j < 5;j++){ _test(); cout<<"----------------------"<<endl; for(int i = 0;i < PUTVALUE;i++) { cout<<putDigit[i]<<" "; } cout<<endl; } system("pause"); } |
|
返回顶楼 | |
发表时间:2009-04-22
最后修改:2009-04-22
打酱油~~~~
import random def gen(n,a=1,b=49): result = [] while True: tmp = random.randint(a,b) if tmp not in result: result.append(tmp) if len(result) == n: return result if __name__ == "__main__": for i in xrange(5): print gen(6) btw:为啥javaeye代码标签可以用jython不能用python? |
|
返回顶楼 | |
发表时间:2009-04-22
简洁的ruby:
5.times{ p (1..49).to_a.sort_by{rand}[0..5]} |
|
返回顶楼 | |
发表时间:2009-04-22
3L的swap是把最后一个数与随机到的数字做个交换,每次循环随机数的范围-1,这样不会选到重复的数字
|
|
返回顶楼 | |