LINUX.ORG.RU

Управляемый рандом. Как реализовать?

 , ,


0

1

#!/bin/bash

count=0

while (true) do

shuf /home/test01/«Рабочий стол»/tel_1 -o /home/test01/«Рабочий стол»/tel_1

cat /home/test01/«Рабочий стол»/tel_1 | sed -n '1p;1q' | xsel -b

...

cat /home/test01/«Рабочий стол»/tel_1 | sed -n '2p;2q' | xsel -b

...

(( count++ )) echo $count sleep 1

done

Подробно:

Командой «shuf /home/test01/„Рабочий стол“/tel_1 -o /home/test01/„Рабочий стол“/tel_1» я перемешиваю файл и снова его перезаписываю.

Командой «cat /home/test01/„Рабочий стол“/tel_1 | sed -n '1p;1q' | xsel -b» я копирую первую строку в буфер.

Как сделать контролируемый рандом? Чтобы в первую и во вторую строку в .txt файле при команде shuf обратно не попадали те же самые данные?


Брать не из /dev/urandom, а из собственного генератора например

awk 'BEGIN {
   # seed
   srand()
   for (i=1;i<=1000;i++){
     print int(1 + rand() * 100)
   }
}'

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

Я не генерирую ничего.

Есть файл .txt, а в нем, например, такие вот цифры в строку:

111 222 333 444 555

Shuf же сделает, к примеру, так:

222 444 111 555 333

А потом так:

444 111 222 333 555

И т.д

BndArs
() автор топика
Ответ на: комментарий от BndArs

И т.д

Ну так и в чём проблема? shuf именно переставляет строки, не дублируя, если у него в генераторе получилось число, уже использованное, то оно пропускается. Если у вас изначально есть одинаковые строки, то их можно удалить скажем man uniq

vodz ★★★★★
()
Ответ на: комментарий от vodz

Есть текстовый файл с числовыми строками. Мне надо, чтобы каждый раз после shuf, я копировал первую строку в буфер, но чтобы через несколько shuf одно и то же значение не попадало в первую строку.

BndArs
() автор топика

рандом он на то и рандом, что результат может быть одинаковым, иначе это будет никакой не рандом.

xmikex ★★★★
()
Ответ на: комментарий от BndArs

Чушь какая-то, а не задача. Перемешайте один раз.

vodz ★★★★★
()
Ответ на: комментарий от BndArs

в лоб: запоминай каждое состояние первой строки. если в результате рандома получил то, что уже было, - делай новый рандом

bvn13 ★★★★★
()
Ответ на: комментарий от BndArs

Есть текстовый файл с числовыми строками. Мне надо, чтобы каждый раз после shuf, я копировал первую строку в буфер, но чтобы через несколько shuf одно и то же значение не попадало в первую строку.

Вы сначала определитесь, сколько у вас строк и сколько возможных комбинаций. Потому что с учетом вашего ограничения при малом числе строк и допустимых значений в строках, ваша рандомизация может оказаться не очень-то и случайной.

vaddd ★☆
()
Ответ на: комментарий от aedeph_

ну так вопрос в том что именно он хочет.
набор всех перестановок или же чтобы просто следующий вариант с предыдущим не совпадал, это разные вещи.

xmikex ★★★★
()
Ответ на: комментарий от aedeph_

набор сам перестановок к рандому не имеет практически никакого отношения. это комбинаторная задача.
ему тогда получается нужна просто функция shuffle, только непонятно какие у него входные данные для нее.

xmikex ★★★★
()
Последнее исправление: xmikex (всего исправлений: 1)
Ответ на: комментарий от aedeph_

random permutation конкретный строится так, что следующий может в точности повторить прошлый.
ты же писал про набор перестановок, что там не будет повторений. не надо путать понятия.

xmikex ★★★★
()
Ответ на: комментарий от xmikex

Я не отвечал на вопрос ТСа, я отвечал на

рандом он на то и рандом, что результат может быть одинаковым, иначе это будет никакой не рандом.

Случайная перестановка (одна, конкретная) генерирует случайную последовательность объектов, в которой последующие объекты не могу быть одинаковыми, при условии, что оригинальное множество было множество неодинаковых.

aedeph_ ★★
()
Последнее исправление: aedeph_ (всего исправлений: 1)
Ответ на: комментарий от aedeph_

ну так и не будет это рандомом, если есть условие по которому должна подчиняться последовательность его.
случайность - это то что совершенно не зависит от предыдущего опыта.

xmikex ★★★★
()
Ответ на: комментарий от aedeph_

у него не соблюдается условие входных данных неповторяющихся.
иначе бы вообще вопроса не было бы его.

xmikex ★★★★
()
Ответ на: комментарий от xmikex

ну так и не будет это рандомом, если есть условие по которому должна подчиняться последовательность его.

То есть про условные вероятности ты тоже никогда не слышал.

aedeph_ ★★
()
Ответ на: комментарий от BndArs

И куда должны уйти те первые строки, которые уже выводились предыдущими итерациями цикла? В любое место, но не в первое? Так как «любое» это в том числе и в конец файла, то вам просто надо перемешать один раз, а потом выводить не первую строку, а по порядку. Выходной же файл формировать путём записывания первой строки в конец.

А вообще, из-за кривой постановки задачи вы спровоцировали срач и не предпринимаете шагов для разъяснений.

vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 1)
Ответ на: комментарий от vodz

Ваш вариант в топе. Но как реализовать?

Я «шаф» первый раз, после есть n количество строк, что мне по порядку копируются в буфер и вставляются в другую программу. Так до конца, после снова «шаф» и повторяется цикл. Как скрипт поймет, что строки в текстовом файле закончились и необходим «шаф»?

anonymous
()
Ответ на: комментарий от anonymous

Как скрипт поймет, что строки в текстовом файле закончились и необходим «шаф»?

Это то как раз самое простое. Вы же перемешали, и начали читать до конца файла. Неужели непонятно, что вы в кучу смешали просьбы о помощи как о алгоритме решения задачи так и о программировании решения? И разговор поэтому межет быть только «бла-бла» ни о чём?

vodz ★★★★★
()
Ответ на: комментарий от xmikex

Ты в курсе, что вероятность, аксиоматически, это всего лишь тройка из множества, алгебры над ним и одной функции, а случайность, всего лишь механизм над интерпретацией, что из себя представляют элементы множества?

aedeph_ ★★
()
Ответ на: комментарий от aedeph_

зачем вообще тут этот тред?
вопрос ни о чем если честно.
описания точного нет чего он именно хотел.

xmikex ★★★★
()
Ответ на: комментарий от aedeph_

вообще стыдно не знать что множество - это одно из понятий базовых математики, которому не дается определения.

xmikex ★★★★
()
Ответ на: комментарий от aedeph_

ты так сказал, будто называешь имя знаменитого математического авторитета какого.

xmikex ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.