Ася Калимуллина
Ася Калимуллина

Генератор случайных чисел в СИ

Помогите написать программу которая будет выводить 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 ), в отличие от предложенного Романом (если его случайный генератор глюканет, цикл будет бесконечным) .

Похожие вопросы
Подскажите где найти хорошую программу - генератор случайных чисел
Описать функции формирования элементов одномерного массива с помощью генератора случайных чисел. С++
Возможно ли сделать так, чтобы генератор случайных чисел выдавал не случайное число?
Уважаемые программисты, напишите пожалуйста в Паскале ABC генератор случайных чисел 5 из 12 разных чисел.
Помогите сделай генератор случайных чисел на VBA excel
Как записать промежуток чисел в Си
Подскажите, как в VBA excel записать генератор случайных чисел
Создайте массив А [1..8] с помощью генератора случайных чисел с элементами от –10 до 10
Генератор чисел [Delphi]
Нужен генератор случайных чисел