求助PPT中的VB抽奖小程序编程

stella0615 2017-11-08 04:35:47
求大神帮助。。。
有1-120个数字,一个文本框,一个按钮,点一次按钮文本框中随机生成一个数字,再点一次按钮文本框随机生成一个数字,以此类推。
每次点击出来的数字都不会再次出现,即点击120次后,所有的数字都会抽完,点击第121次时文本框将不会产生数字或程序自动结束。
...全文
701 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
点击120次?我怕你手是要抽筋哦
赵4老师 2017-11-09
  • 打赏
  • 举报
回复
随机必然有重复,所谓“不重复的随机”实际上是洗牌。洗牌算法参考下面:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int d[6];
int i,n,a,b,t;
int c,j;
void main() {
    srand(time(NULL));
    printf("shuffle 0..n-1 demo\n");
    for (n=1;n<=5;n++) {/* 测试1~5个元素 */
        printf("_____n=%d_____\n",n);
        j=1;
        for (c=1;c<=n;c++) j=j*c;/* j为n! */
        j*=n*2;
        for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
            for (i=0;i<n;i++) d[i]=i;/* 填写0~n-1 */
            for (i=n;i>0;i--) {/* 打乱0~n-1 */
                a=i-1;b=rand()%i;
                if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
            }
            printf("%04d:",c);
            for (i=0;i<n;i++) printf("%d",d[i]);
            printf("\n");
        }
    }
    printf("shuffle 1..n demo\n");
    for (n=1;n<=5;n++) {/* 测试1~5个元素 */
        printf("_____n=%d_____\n",n);
        j=1;
        for (c=1;c<=n;c++) j=j*c;/* j为n! */
        j*=n*2;
        for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
            for (i=1;i<=n;i++) d[i]=i;/* 填写1~n */
            for (i=n;i>1;i--) {/* 打乱1~n */
                a=i;b=rand()%i+1;
                if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
            }
            printf("%04d:",c);
            for (i=1;i<=n;i++) printf("%d",d[i]);
            printf("\n");
        }
    }
}
脆皮大雪糕 2017-11-09
  • 打赏
  • 举报
回复
1、创建一个集合 2、120个数插入集合 3、取两个1~120间的随机数,将这两个数作为集合下标从集合中取数,并将两个集合成员交换 4、重复执行步骤3若干次以后,就形成一个随机排列120个数字的集合 5、每次点击按钮,取集合的第一个成员,然后删除集合的这个成员 6、当120次取数以后注意容错
zffmss 2017-11-09
  • 打赏
  • 举报
回复
专为拿分而来
X-i-n 2017-11-09
  • 打赏
  • 举报
回复
引用 1 楼 chewinggum 的回复:
1、创建一个集合 2、120个数插入集合 3、取两个1~120间的随机数,将这两个数作为集合下标从集合中取数,并将两个集合成员交换 4、重复执行步骤3若干次以后,就形成一个随机排列120个数字的集合 5、每次点击按钮,取集合的第一个成员,然后删除集合的这个成员 6、当120次取数以后注意容错
应该可以更简单一点,不需要乱序,去掉3,4,5步,每次取数的时候,如果集合的count=0,就退出,如果count>0,直接随机生成0~count-1之间的index,取这个index对应的元素,输出以后并删除。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧