Генератор случайных чисел picaxe 28x1
У меня есть простой код, использующий функцию случайных чисел с веб-сайта Picaxes (слегка адаптированный)
symbol counter = b7
symbol randword = b5
for counter = 0 to 10
let randword = timer
random randword
write counter, b5
next counter
end
По какой-то причине в Picaxe Editor версии 5 это работает отлично, но в Picaxe Editor 6 все, что он делает, это выдает 2, не очень случайно, я понятия не имею, почему.
Любая помощь высоко ценится
Спасибо
1 ответ
Проверка руководства по языку PICAXE BASIC показывает несколько возможных проблем с вашим кодом:
timer
Системная переменная должна быть инициализирована сsettimer
команда, прежде чем вы можете использовать его- в зависимости от того, какое значение предварительной нагрузки вы используете с
settimer
, значениеtimer
вполне может не измениться за короткое время между одной итерацией цикла и следующей, что даст вам тот же результат изrandom
random
должен использоваться с переменной слова (w0, w1 и т. д.), а не с байтовой переменной
Что я думаю, ручной ввод для random
предлагает вам сделать, хотя я согласен, что не совсем ясно, если вы новичок в генерации случайных чисел, это затравить random
с timer
в первый раз, когда вы вызываете его, затем каждый раз после этого заполняйте его собственным предыдущим значением:
symbol counter = b5
let w3 = timer ; w3 is the word variable consisting of b6 and b7
for counter = 0 to 10
random w3
; ...do something with the value of w3 (but don't change w3 itself)...
next counter
Однако, сказав все это, вполне возможно, что симулятор в той или иной версии редактора программирования PICAXE не имитирует поведение timer
правильно во всех случаях. Если вы не можете заставить код работать на реальном PICAXE, задайте этот вопрос на форуме PICAXE, где его увидят сотрудники службы поддержки Revolution Education, а также другие знающие пользователи.