彩票問題編程
Ⅰ 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;
}