Тема: Допоможіть з С, питання типу "як зробити"
Підкажіть, будь ласка, як в масиві задати певну послідовність чисел в рандомному порядку, але без повторів.
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Допоможіть з С, питання типу "як зробити"
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Підкажіть, будь ласка, як в масиві задати певну послідовність чисел в рандомному порядку, але без повторів.
Як варіант можна перевіряти, чи було вже таке число, але це не ефективно, краще заповнити масив послідовними числами 0,1,2,3...n, а потім зробити n рандомних замін
a[ i ] <=> a[ j ],
де і йде послідовно, а j обирається рандомно.
Як варіант можна перевіряти, чи було вже таке число, але це не ефективно, краще заповнити масив послідовними числами 0,2,3...n, а потім зробити n рандомних замін
a[ i ] <=> a[ j ],
де і йде послідовно, а j обирається рандомно.
а це не можна якось записати через ф-ію rand()? я намагався заповнювати елементи матриці через цикл за допомогою ф-ії rand(), але там повторюються числа
а це не можна якось записати через ф-ію rand()? я намагався заповнювати елементи матриці через цикл за допомогою ф-ії rand(), але там повторюються числа
Залежить від того, що ви маєте на увазі під "через ф-ію rand()". Якщо якийсь хитрий вираз за участі rand() - то ні, функція фізично не може запам'ятати всі значення, які вона вже повернула (для цього знадобиться 16ГБ при 32-бітних числах). Але в процедурі, описаній паном Chemist-i, використовується rand() - там, де він пише про "рандомний вибір". До речі, випадкове число j має бути від i до n-1, інакше будуть артефакти тасування.
Якщо ж вам треба не тасувати, а наприклад, отримати 1000 унікальних чисел від 0 до 1000000 - то справа трохи інша.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися