Генерация случайного вывода с разными переменными - PullRequest
0 голосов
/ 05 марта 2020

Как сделать случайный вывод переменных? Я хотел бы случайным образом расположить и вывести переменную

bind pub -|- !random proc:random
proc proc:random {nick host handle channel arg} {

set output1 "test1"
set output2 "test2"
set output3 "test3"
set output4 "test4"
set output5 "test5"
set output6 "test6"
set output7 "test7"

set ouput "$output1 $output2 $output3 $output4 $output5 $output6 $output7"

putnow "PRIVMSG $channel :$ouput"
}

Вывод должен выглядеть следующим образом, например:

Первый раз

set ouput "$output6 $output2 $output4 $output1 $output5 $output7 $output3"

Второй раз

set ouput "$output5 $output1 $output3 $output7 $output2 $output4 $output6"

В третий раз

set ouput "$output2 $output7 $output6 $output1 $output3 $output5 $output4"

1 Ответ

0 голосов
/ 06 марта 2020

Либо вам нужен случайный случайный переход, либо вы хотите пройти серию перестановок. Первый гораздо проще реализовать, так как вам нужно менее постоянное состояние, и у Tcllib уже есть случайный shuffler для вас.

# This is part of Tcllib
package require struct::list

bind pub -|- !random proc:random
proc proc:random {nick host handle channel arg} {
    set randomItems {
        "test1"
        "test2"
        "test3"
        "test4"
        "test5"
        "test6"
        "test7"
    }

    set output [struct::list shuffle $randomItems]
    putnow "PRIVMSG $channel :$output"
}

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

(Обратите внимание, что принято ставить вызовы package require вне процедур в верхней части скрипта, чтобы их было легко найти при визуальном сканировании файл. Tcl не применяет это, и никогда не будет применять, но это определенно хороший стиль.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...