【问题标题】:Random lottery number generator in C programmingC编程中的随机彩票号码生成器
【发布时间】:2021-01-06 15:58:04
【问题描述】:

我想生成 7 个不同的数字 (0-9) - 第一个数字不应该是 0- 并将它们放入一个数组中。每个数字都应该是唯一的。我知道我做错了什么,但我不知道我该怎么做。

int arr[7], j, i;
    srand(time(NULL));
    for (i = 0; i < 7; i++)
    {
        arr[i] = rand() % 10;
                if (arr[0] == 0) 
                arr[0] = rand() % 10;
}
    for (i = 0; i < 7; i++)
    {
        for (j = 0; j < 7; j++)
        {
            
            if (i == j) {
                j++;
            }
            if (arr[i] == arr[j])
                arr[j] = rand() % 10;
    
        
        }
    }
    printf("\n");
    for(j=0;j<7;j++)
            printf("\n%d ", arr[j]);

【问题讨论】:

  • 这能回答你的问题吗? Random and Different Numbers in C
  • 我会生成一个随机的 排列 数字 0-9,然后选择前 8 个。如果第一个为零,则从第二个开始选择。不知道没有0 作为第一个数字(并且有任何其他数字)如何与 any 彩票规则保持一致。
  • 奇怪,5 小时前的一个非常精确的复制品!

标签: c


【解决方案1】:
  • 您可以使用rand() % 9 + 1 生成介于 1 和 9 之间的随机数。
  • arr[j] 可能在j++; 之后超出范围。

试试这个:

int arr[7], j, i;
srand(time(NULL));
arr[0] = rand() % 9 + 1; /* decide first number with special formula */
for (i = 1; i < 7; i++) /* decide the rest numbers */
{
    int dupe = 0;
    arr[i] = rand() % 10;
    for (j = 0; j < i; j++) /* check against numbers that already decided */
    {
        if (arr[i] == arr[j])
            dupe = 1; /* ouch, this number is already used! */
    }
    if (dupe)
        i--; /* if the number is already used, try again */
}
printf("\n");
for(j=0;j<7;j++)
    printf("\n%d ", arr[j]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-17
    • 2022-11-16
    • 2019-03-27
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    相关资源
    最近更新 更多