Генератор случайных чисел 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, а также другие знающие пользователи.

Другие вопросы по тегам