Понякога програмираме някакъв скрипт на Тряскам ... и трябва (по някаква причина) да генерираме произволно число.
За това можете да програмирате цяло приложение (или функция ...) да, но ... любопитно е, че нашата система вече е направила това 😀
В терминал въведете следното и натиснете [Въведете]:
ехо $ СЛУЧАЙНО
... ще се появи число, те отново правят същото и се появява друго число и така нататък 🙂
Това, което прави, е да ви покаже произволно число (произволно) между 0 и 32768 (цяло число, тоест без запетая).
Ако трябва да е произволно число, но между 0 и ... да кажем 100, можете да поставите това ограничение it
echo $ (($ RANDOM% 100))
Същото, друг пример ... ако искате да е число между 0 и 29, би било:
echo $ (($ RANDOM% 29))
Не се ли разбира? 😀
Ако те ще го използват в bash скрипт, който правят, за да присвоят генерираната стойност (произволно число) на променлива, би било:
VARIABLE = `echo $ (($ RANDOM))`
Ами това е, не знам за вас ... но знам, че ще ми бъде полезно в даден момент хахаха.
поздрави
Е, тествах го и той връща само 4-цифрено число, как да го направя по-голям?
Много интересен съвет, благодаря.
Връща число между 0 и 32768, не успях да получа по-големи числа.
и може ли да генерира exadecimals ????
VARIABLE = `echo $ (($ RANDOM))`
Това работи, но не е оптимално, поради простата причина, че RANDOM е променлива и можете да направите:
променлива = $ СЛУЧАЙНА
и това е! не пускайте ехо в aprte терминал (което правите)
Да, очевидно може да се постигне така ... единствената разлика е, че по-късно, за да видите числото, което променливата е взела (тъй като потребителят не е познаващ), ще е необходимо да направите ехо .... и в крайна сметка това, което правя тук, е просто да направя ехото (така че потребителят да види кой номер е взет) от самото начало.
Давам ли да се разбера? 🙂
Друг начин за генериране на произволно число, въпреки че този път това ще бъде тази команда:
дата "+% N" | изрежете -c 9
Това ще ни даде датата в наносекунди с 9 цифри. Ако искаме една цифра, тогава поставяте "cut -c 9" (последната цифра винаги е по-случайна, защото е най-малката от числото). Ако искаме 2 цифри, тогава поставяме "cut - c 8,9". Ако искаме три цифри, тогава "изрежете -c 7-9" (започваме да използваме тирето).
Единственото лошо нещо за това е, ако искаме да получим много случайни числа подред за кратко време, защото това е произволно число, основано на дата с времето си. Тоест, ако направим for с тази команда, можем да видим, че:
$ за i в `sq 1 1 500`; дата на "+% N"; Свършен
...
...
...
308311367
310807595
313273093
315725181
318186139
320671403
323360117
325733353
328335462
330694870
333259893
335858999
338375622
340798446
...
...
...
Мисля, че е ясно нали? Фигурите отляво са по-сходни за кратко време, разбира се, а тези отдясно са по-„случайни“.
mmm…. Хареса ми, имам мини скрипт, който остава да генерира произволни числа, благодаря.
Служи .. и много ..
особено ако програмирате интерфейс в bash с парола, сигурност и т.н., и т.н., и т.н. хаха.
Отличен апротет.
Здравейте.
На първо място, разбира се, поздравления за този отличен уебсайт, който следя от дълго време.
И второ, направете малка бележка към този запис:
Когато ограничението се прави по следния начин:
echo $ (($ RANDOM% 10))
Всъщност това, което поръчвате на интерпретатора, е, че генерираното ви число винаги е модулът% (остатък от делението) на следващия номер, в този пример 10.
Всяко число, разделено на 10, никога няма да даде на остатъка нещо по-голямо от самия делител.
Проблемът е, че и той няма да даде същия номер, защото разделението на 0 не е логично за интерпретатора.
Това означава, че echo $ (($ RANDOM% 10) ще даде резултати между 0 и 9, но никога 10.
Решението на този конфликт е да добавите такъв към лимита си, така че същият брой да попадне в произволния диапазон.
echo $ (($ RANDOM% 11))
Това ще даде резултати между 0 и 10.
За поздрав.
Здравейте, тъкмо изграждах нещо подобно, но се сблъсках с проблем.
Искам да направя 6 различни числа от 00 до 45, но да не ги повтарям.
ехо $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($RANDOM%46)) $(($ СЛУЧАЙНА%46))
НАПР.: 17 33 16 36 45 27