Arduino 上的随机数生成器和读数的可重复性

问题描述 投票:0回答:1

我想实时制作随机数生成器。

我有一个带有以下代码的arduino nano:

void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(A0)); 
}

void loop() {
  int randomNumber = random(1001);
  Serial.println(randomNumber); 
  delay(1000); 
}

我有用 python 编写的从这个 arduino 读取 COM 端口的代码。 这是代码:

import serial

ser = serial.Serial('COM5', 9600) 

while True:
    if ser.in_waiting > 0:
        received_data = ser.readline().decode('utf-8').rstrip() 
        print("Received data:", received_data)

我进行了测试。我在 python 中运行该程序两次并得到这些值:

第一次 第二次
收到数据:553 收到数据:553
收到数据:243 收到数据:243
收到数据:903 收到数据:903
收到数据:869 收到数据:869
接收数据:350 接收数据:350
收到数据:928 收到数据:928
接收数据:75 接收数据:75
收到数据:911 收到数据:911
收到数据:631 收到数据:631
接收数据:985 接收数据:985

我也尝试过这样设置:

void setup() {
  Serial.begin(9600);

  // Wait for a short period to allow the system to initialize
  delay(100);

  unsigned long seedValue = micros();  // Use micros() instead of millis()
  Serial.print("Seed value: ");
  Serial.println(seedValue);
  randomSeed(seedValue);
}

为什么值会重复?它不会重新启动 Arduino。

如何让结果不同?

arduino
1个回答
0
投票

我不确定这是否有效。但是尝试在下面显示的代码中的数字位置使用这个“随机(最小值,最大值)”怎么样?

int randomNumber = random(1001);
© www.soinside.com 2019 - 2024. All rights reserved.