Отговори на тема  [ 11 мнения ] 
Генериране на случайна поредица 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 1:23 pm
Мнения: 3545
Местоположение: Високо в планината
Мнение Генериране на случайна поредица
Трябва да генерирам поне 16 поредици от случайни числа.
- Всяка поредица трябва да съдържа ВСИЧКИ числа от 1 до 64 (или от 0 до 63)
- Корелацията между различните поредици трябва да бъде минимална

Преди време бях писал едно LGC-генераторче с модул от 31 - тоест за числата от 1 до 31, но сега се оглеждам за алтернативи.

Някакви идеи?

_________________
Хайде де!


Вто Фев 18, 2020 10:43 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: Генериране на случайна поредица
ммм генератори много, алгоритми много, зависи за какви цели го правиш, т.е.очаква ли се някой да се опитва да ти налучква поредиците, примерно както е в казино приложенията, ако да мога единствено да те посъветвам да използваш алгоритъм сертифициран за целите, има такива. Ако няма никой д налучква има доста модификации на lgc, разгледай xorshift имплементациите.


Вто Фев 18, 2020 11:00 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Май 29, 2007 1:23 pm
Мнения: 3545
Местоположение: Високо в планината
Мнение Re: Генериране на случайна поредица
Не ми трябва за криптиране, а за една сигнална обработка.
xorshift не върши работа, защото не осигурява условието да включи всички числа по един път.
В момента временно съм закърпил положението с пермутации, но търся някакъв по-дефиниран начин.

_________________
Хайде де!


Вто Фев 18, 2020 12:27 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Яну 25, 2012 8:14 am
Мнения: 4577
Местоположение: Новата земя на племето Мутум'ба
Мнение Re: Генериране на случайна поредица
Удряш в област където пиша труд :)
Както и да е, тъй като броят на числта ти е малък (не е като да бяха един милиард примерно), това улеснява доста. Според мен най-простото решение би било да генерираш последователна поредица от 0 то 63 и след това да ги разместиш на случаен принцип, вместо да си играеш да ги генерираш директно.
Пак ще ти трябва генератор на случайни числа, обаче няма да ти трябва NRRN (което е трудното в случая), а съвсем обикновен. За да ти е гарантирано разместването, броят на пермутациите трябва да е поне N^2 т.е. в твоя случай поне 4096

_________________
'просто' е технически синоним на 'красиво'


Вто Фев 18, 2020 12:30 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Яну 01, 2012 7:04 pm
Мнения: 2581
Местоположение: Велико Търново / София
Мнение Re: Генериране на случайна поредица
Ами генератор на бял шум -> АЦП - измерване на моментната стойност ?
п.с. даже и тема имало

_________________
https://github.com/slav4ocom/


Вто Фев 18, 2020 12:32 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Юни 05, 2006 12:48 pm
Мнения: 4393
Местоположение: където небето среща земята, ракията е Jameson, а бирата Guinness
Мнение Re: Генериране на случайна поредица
dan написа:
Трябва да генерирам поне 16 поредици от случайни числа.
- Всяка поредица трябва да съдържа ВСИЧКИ числа от 1 до 64 (или от 0 до 63)
- Корелацията между различните поредици трябва да бъде минимална

Преди време бях писал едно LGC-генераторче с модул от 31 - тоест за числата от 1 до 31, но сега се оглеждам за алтернативи.

Някакви идеи?

ако искаш да подходиш академично - правиш Nonlinear Feedback Shift Register. за да избереш правилният полином чети Кнут, Голомб(W. Golomb, G. Gong. Signal Design for Good Correlation.. пак от него Shift Register Sequences.) и Bruce Schneier.

иначе практически може да инициализираш кой да е криптографски алгоритъм в counter mode, и взимаш изходната поредица след първите 128 блока. . на теория за къси поредици не трябва да имаш повторения. Това може да го направиш на питон, или матлаб/окава ако работиш на ПЦ или да ползваш билблиотеки и периферии на микроконтрлер (вече потчи всички имат такова).
Може да ползваш т.м. True Random Generator, но повечето които говорят че са True Random , не са :) и ти трябва допълнителен анализ доколко е рандом.
та затова ползвай криптоалгоритъм в коунтер моде или оутпут фийдбек.
Поздрави

_________________
... ако трети ден не ти се работи... това означава, че е сряда !


Вто Фев 18, 2020 12:48 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 8:21 pm
Мнения: 27949
Местоположение: София
Мнение Re: Генериране на случайна поредица
dan написа:
Не ми трябва за криптиране, а за една сигнална обработка.
xorshift не върши работа, защото не осигурява условието да включи всички числа по един път.
В момента временно съм закърпил положението с пермутации, но търся някакъв по-дефиниран начин.

Според мен случаен генератор в областта 0-63 няма как да ти свърши работа ако наистина е случаен, вероятността да ти върне последователно 64 резултата и да нямаш повторение е доста малка. Както ти писа бабане, изпозлвай генератора за да ги разместиш.


Вто Фев 18, 2020 1:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Вто Ное 06, 2018 4:18 pm
Мнения: 1188
Мнение Re: Генериране на случайна поредица
В Python има готова функция:
import random
list = [0, 1, 2 .. и така нататък до 62, 63];
random.shuffle(list)


Вто Фев 18, 2020 1:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 22, 2006 2:25 am
Мнения: 6004
Мнение Re: Генериране на случайна поредица
сигурно си се сетил ама ми хрумва една бабешка сметка, случайни генератори много, но не гарантират всички числа, за да включиш всичко и гарантирано само по 1 път можеш да направиш следното:
не генерираш случайно число а случайна позиция от оставащата редица числа, и така избираш каквото е останало на тая позиция
примерно генерираш случайна позиция от 1 до 64 - получаваш 3 - първоначално това ти дава число 3
в редицата ти остава 1, 2, 4, 5, 6, .....
следващото генериране ти е от 1 до 63, ако отново генерираш случайна позиция 3 - това ти дава число 4
ако не ти се струва достатъчно случайно може да си го доукрасиш още малко


Вто Фев 18, 2020 1:46 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 10:41 am
Мнения: 1657
Мнение Re: Генериране на случайна поредица
http://mcu-bg.com/mcu_site/viewtopic.php?f=22&t=11128&hilit=%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80+%D0%BD%D0%B0+%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D0%B8+%D1%87%D0%B8%D1%81%D0%BB%D0%B0

Преправяш си го за 6 бита.
Генерираш първото число.
После генерираш второто, докато се падне различно от първото.
После третото, докато е различно от (1) и (2)....
И така до (64).

:)


Сря Фев 19, 2020 12:52 am
Профил ICQ WWW
Ранг: Напреднал
Ранг: Напреднал
Аватар

Регистриран на: Съб Май 21, 2016 8:47 pm
Мнения: 472
Местоположение: Бургас
Мнение Re: Генериране на случайна поредица
Сещам се още един вариант:
Масив с числата от 0 до 63.
Генерираш две случайни числа в интервала 0..63.
Разменяш местата на числата в тези позиции.
Правиш хватката с размяната достатъчно брой пъти, за да се получи сравнително случайна поредица (т.е. поне 128 пъти или повече в зависимост от генератора).
Така ще си сигурен, че всички числа са налице и няма повтарящи се.


Сря Фев 19, 2020 10:38 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 11 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 7 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни