彩票问题编程
Ⅰ c语言程序设计——彩票问题
以下的 C 小程序将输出所有 28 个和值的出现的概率(输出贴在程序下面)。
可见概率最高 0.075,最低 0.001,所以已开出的 1000 期彩票中出现频率最高的和值是 13 和 14,
连续未出现期数最长的和值则是 0 和 27 (假设实际概率和理论概率吻合)。
#include<stdio.h>
/* 返回 number 中所有数字的和 */
unsigned sumOfAllDigits( unsigned number );
void main( ) {
/* 最低和值是 0,最高和值是 27,所以共有 28 个和值。*/
#define NUMBER_OF_SUM 28
unsigned chance[ NUMBER_OF_SUM ] = { 0 },
i;
for ( i = 0; i <= 999; i++ )
++chance[ sumOfAllDigits( i ) ];
puts( "和值\t出现的概率" );
puts( "一一\t一一一一一" );
for ( i = 0; i < NUMBER_OF_SUM; i++ )
printf( "%2u\t%.3f\n", i, chance[ i ] / 1000. );
}
unsigned sumOfAllDigits( unsigned number ) {
unsigned sum = 0;
for ( ; number; number /= 10 )
sum += number % 10;
return sum;
}
一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一
输出:
和值出现的概率
一一一一一一一
00.001
10.003
20.006
30.010
40.015
50.021
60.028
70.036
80.045
90.055
100.063
110.069
120.073
130.075
140.075
150.073
160.069
170.063
180.055
190.045
200.036
210.028
220.021
230.015
240.010
250.006
260.003
270.001
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Random;
importjava.util.Scanner;
publicclassLotto{
publicstaticfinalintNUMBER=7;
publicstaticvoidmain(String[]args){
List<Integer>userNumbers=newArrayList<Integer>();
Scannerscanner=newScanner(System.in);
inti=1;
while(i<8){
System.out.println("输入第"+i+"个数字:");
userNumbers.add(scanner.nextInt());
i++;
}
System.out.println(prize(userNumbers.toArray(newInteger[NUMBER])));
}
privatestaticInteger[]generateLotto(){
List<Integer>lottoNumbers=newArrayList<Integer>();
Randomrand=newRandom();
intlottoNumber,i=0;
while(i<NUMBER){
lottoNumber=rand.nextInt(35)+1;
if(!lottoNumbers.contains(lottoNumber)){
lottoNumbers.add(lottoNumber);
i++;
}
}
returnbubbleSort(lottoNumbers.toArray(newInteger[NUMBER]));
}
privatestaticInteger[]bubbleSort(Integer[]array){
for(inti=0;i<array.length;i++){
for(intj=0;j<array.length-i-1;j++){
if(array[j]>array[j+1]){
inttemp=array[j+1];
array[j+1]=array[j];
array[j]=temp;
}
}
}
returnarray;
}
publicstaticStringprize(Integer[]userNumbers){
intcount=0;
Integer[]lottoNumbers=generateLotto();
for(Integeri:userNumbers){
for(Integerj:lottoNumbers){
if(i==j){
count++;
}
}
}
return"猜对了"+count+"个彩票号码";
}
}
输入第1个数字:
5
输入第2个数字:
14
输入第3个数字:
19
输入第4个数字:
24
输入第5个数字:
33
输入第6个数字:
34
输入第7个数字:
27
猜对了 3 个彩票号码
Ⅲ C语言编程,数组,随机数,彩票生成器问题(详见问题补充)
c语言编程帮实现
Ⅳ VB彩票程序设计
新建一个单窗体的工程,在上面画出七个TEXTBOX,最好是一个控件数组,这样编程时容易控制,再建一个COMMOND BUTTON,将CAPTION改为“随机产生”。在程序运行后,每点击一下COMMAND1,将随机产生一组数字并按从小到大的顺序显示在文本框中。下面就是程序部分:Dim NumArray(1 To 7) As Integer′通用中定义
Private Sub Command1_Click()
Dim i, j, N As Integer
For i = 1 To 7
NumArray(i) = 0
Next i
Randomize
NumArray(1) = Fix(1 + 32 * (Rnd()))
j = 1
Do
N = Fix(1 + 32 * (Rnd()))
For i = 1 To j
If N = NumArray(i) Then
Exit For ′重复时
ElseIf i = j Then ′未重复时
NumArray(i + 1) = N
j = j + 1
Exit For
End If
Next i
Loop While j < 7
PopSort ′升序排列
For i = 1 To 7
Text1(i - 1).Text = NumArray(i)
Next i
End Sub
Private Sub PopSort() ′气泡排序法
Dim i, j, Temp As Integer
For i = 7 To 2 Step -1
For j = 7 - 1 To 1 Step -1
If i >= 7 - j + 1 Then
If NumArray(j + 1) < NumArray(j) Then
Temp = NumArray(j)
NumArray(j) = NumArray(j + 1)
NumArray(j + 1) = Temp
End If
End If
Next j
Next i
End Sub
Ⅳ JAVA彩票编程:
package demo;import java.util.Random;public class Demo {
public static void main(String[] args) {
long x=0xfffL;
System.out.println(x);
Random r = new Random();
int a = (r.nextInt(33)+1);
int b = 0;
do{
b = r.nextInt(33)+1;
}while(b ==a);
int c = 0;
do{
c = r.nextInt(33)+1;
}while(c==a||c==b);
int d = 0;
do{
d = r.nextInt(33)+1;
}while(d==a||d==b||d==c);
int e = 0;
do{
e = r.nextInt(33)+1;
}while(e==a||e==b||e==c||e==d);
int f = 0;
do{
f = r.nextInt(33)+1;
}while(f==a||f==b||f==c||f==d||f==e);
int h = r.nextInt(16)+1;
System.out.println("红球号码:"+a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+"蓝球号码:"+h);
}
}
//r.nextInt(33)+1 是产生1-33随机数的 思想是先产生随机数后判断相等,有相等则继续循环
Ⅵ vb编程彩票随机问题
Private Sub Command1_Click()
Dim i, a(34), b(7)
Randomize: Cls
For i = 1 To 7
b(i) = Int(Rnd * 34 + 1)
If a(b(i)) Then i = i - 1 Else a(b(i)) = 1
Next
Print "34 选 7组 福利彩票系统,中奖号码:"
For i = 1 To 7
Print b(i)
Next
End Sub
Ⅶ 编写买彩票程序。编程让计算机随机产生7个1~30的整数,要求每次产生的7
祝册送宋rm比的 jjj.ee/rme7
static void Main(string[] args)
{
string i = null;
do
{
Console.Write("请输入整数(范围1~100)\n要退请输入0否则输入1");
i = Console.ReadLine();
if (i.Trim().Equals("0"))
{
return;
}
} while (!i.Trim().Equals("1"));
start:
Random ra = new Random();
int rndInt = ra.Next(1, 100);
int input = 0;
do
{
Console.Write("输入猜数值:");
i = Console.ReadLine();
if (!int.TryParse(i, out input))
{
continue;
}
if (input > rndInt)
{
Console.Write("猜\n\n");
}
else if (input < rndInt)
{
Console.Write("猜\n\n");
}
} while (input != rndInt);
Console.Write("恭喜猜\n\n");
do
{
Console.Write("若继续猜测输入Y,若退则输入N!\n请输入:");
i = Console.ReadLine();
if (i.Trim().Equals("n", StringComparison.OrdinalIgnoreCase))
{
return;
}
if (i.Trim().Equals("y", StringComparison.OrdinalIgnoreCase))
{
goto start;
}
} while (!i.Trim().Equals("1"));
}
Ⅷ 编程问题:模拟彩票功能,在36个数字(1--36)中随机挑选7个数字输出
#include<stdio.h> #include<stdlib.h> #include<time.h> void main() { int m,i,j,sum,a[9]; for(i=1;i<=7;i++) a[i]=0; i=1; srand(time(NULL));//设置时间种子,保证每次产生的随机数不同 while(i<=7) { m=rand()%36;//产生0-36的随机数 sum=0; if(m!=0) { for(j=1;j<=i;j++) { if(a[j]!=m) sum+=1; } if(sum==i) { a[i]=m; i=i+1; } } } for(i=1;i<=7;i++) printf("%d\n",a[i]); } 找不到TC2.0,所以该程序是在VC环境中编译的,逻辑过程是正确的,如果你一定要用TC环境,那可能要改时间种子和随机函数了,不过这是小问题,上网搜搜就有了:)
Ⅸ C语言 实现模拟彩票的程序设计:随机产生7个数字(用C语言随机函数产生,[1,33]区间,七个数互
使用结构体链表模拟彩票的摇奖机,来保证每次随机都是不同的数字。
数组也可以模拟,但是删除元素比较麻烦,用链表更快捷。
定义数组指针,动态分配内存。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedefstructList{
intnumber;
structList*next;
}ArrayList;
ArrayList*createList(int);//创建链表,参数是链表的节点数
voidfreeList(ArrayList*);//循环释放所有节点的内存
intdeleteNode(ArrayList*,int);//删除节点,返回节点的数据
main(){
//动态创建内存
int*numbers=(int*)calloc(7,sizeof(int));
int*inNumbers=(int*)calloc(7,sizeof(int));
//动态创建数组链表存放1-33个编号
ArrayList*balls=createList(33);
inti;
srand((unsigned)time(NULL));
printf("请输入7个不同的数字(1-33): ");
for(i=0;i<7;i++){
*(numbers+i)=deleteNode(balls,rand()%(33-i));
scanf("%d",inNumbers+i);
}
printf("随机产生的7个数字是: ");
for(i=0;i<7;i++){
printf("%d",*(numbers+i));
}
printf(" 相同的数字: ");
//查找
intj;
for(i=0;i<7;i++){
for(j=0;j<7;j++){
if(*(numbers+i)==*(inNumbers+j)){
printf("%d",*(numbers+i));
break;
}
}
}
//释放内存
free(numbers);
free(inNumbers);
freeList(balls);
}
ArrayList*createList(intn){
ArrayList*head=NULL,*end=NULL,*node=NULL;
end=head=(ArrayList*)malloc(sizeof(ArrayList));//head在删除和插入节点时有用。不能删除head,也不能插入到head前面
inti;
for(i=1;i<=n;i++){
node=(ArrayList*)malloc(sizeof(ArrayList));
node->number=i;
end->next=node;
end=node;
}
end->next=NULL;
returnhead;
}
voidfreeList(ArrayList*head){
ArrayList*node=head;
while(head!=NULL){
head=head->next;
free(node);
node=head;
}
}
intdeleteNode(ArrayList*head,intindex){//index节点索引(0-32),返回被删除的球的编号
ArrayList*node=head->next,*temp=head;
inti=0,number;
while(i<index&&node!=NULL){
temp=node;
node=node->next;
i++;
}
if(node!=NULL){
number=node->number;
temp->next=node->next;
free(node);
}
returnnumber;
}
运行结果
Ⅹ 求助C语言大神 双色球彩票问题
C语言 这个用结构体 还不如直接用变量来的方便。
#include"stdio.h"
structcolorb
{
intredb[6];
intblueb;
};
//函数根据双色球说明写下的判断几等奖,i是红球中奖数,m是篮球。
voiddengji(i,m)
{
switch(i)
{
case0:if(m==1)printf("6");break;
case1:if(m==1)printf("6");break;
case2:if(m==1)printf("6");break;
case3:if(m==1)printf("5");break;
case4:if(m==1)printf("4");elseprintf("5");break;
case5:if(m==1)printf("3");elseprintf("4");break;
case6:if(m==1)printf("1");elseprintf("2");break;
default:printf("0");
}
printf(" ");
}
intmain()
{
structcolorbreal,test;
intm,n,i=0;
printf("pleaseinput:");
scanf("%d%d%d%d%d%d%d",&real.redb[0],&real.redb[1],&real.redb[2],&real.redb[3],&real.redb[4],&real.redb[5],&real.blueb);
while(1)
{
printf("pleasesearch:");
scanf("%d%d%d%d%d%d%d",&test.redb[0],&test.redb[1],&test.redb[2],&test.redb[3],&test.redb[4],&test.redb[5],&test.blueb);
if(test.blueb<0)break;//篮球输入负数,退出循环。
for(m=0;m<=5;m++)
for(n=0;n<=5;n++)
if(real.redb[m]==test.redb[n])
{
i++;//判断红球中有几个是相同的。
printf("%d",real.redb[m]);//输出相同的红球
break;
}
m=real.blueb==test.blueb?1:0;
printf("RED:%d",i);//输出红球个数
printf("BLUE:%d ",m);//输出篮球个数
dengji(i,m);//判断几等奖
}
return0;
}