Генератор случайных чисел в СИ
Помогите написать программу которая будет выводить 4-значное число, цифры которого не повторяются ( с помощью генератора случайных чисел)
Помогите написать программу которая будет выводить 4-значное число, цифры которого не повторяются ( с помощью генератора случайных чисел)
поищи исходники
res=a[0]=1+rand() % 9;
for (i=1; i<=3; i++) {
do {
sovp=0;
r=rand() % 10;
for (j=0; j < i; j++) if (r==a[ j]) { sovp=1; break; }
} while (sovp==1);
a[ i]=r;
res=res*10 + r;
}
Я на C# только могу, адаптируй под С:
using System;
using System.IO;
namespace s
{
class MainClass
{
public static void Main (string[] args)
{
int[] Digits = new int[9] {1,2,3,4,5,6,7,8,9}; //Наши неповторимые значения
int s = 0;
Random r = new Random(); //Это создание генератора, тебе не надо
for (int j=0; j<4; j++)
{
int k = r.Next(9-j); //Получаем случайный индекс
s=s*10+Digits[k]; //Добавляем циферку
Digits[k]=Digits[8-j]; //А теперь убиваем выбранное значение
}
Console.WriteLine(s);
}
}
}
Кстати, сложность этого алгоритма строго детерминирована ( O(n)=const ), в отличие от предложенного Романом (если его случайный генератор глюканет, цикл будет бесконечным) .