m0_72314819 2022-09-05 12:37 采纳率: 100%
浏览 10
已结题

如何用c++编译随机文字程序

想编一个自己将所有字符全部输入程序,然后随机出现其中一个字符,且不重复的程序,想练练手😁

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-09-05 13:18
    关注

    随机必然有重复,所谓“不重复的随机”实际上是洗牌。洗牌算法参考下面:

    #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");
            }
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 9月13日
  • 已采纳回答 9月5日
  • 创建了问题 9月5日

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真