极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12434|回复: 4

关系随机的问题(急)

[复制链接]
发表于 2015-12-27 10:30:18 | 显示全部楼层 |阅读模式
这个每一秒产生两个随机数的代码,分别为randNumberA;randNumberB;范围一样,但是这两个数会有记录重复,那我加个while
while(randNumberA==randNumberB){这里该怎么写呢)我想说一样的时候 让其中一个数再进行随机,但这样会显示3个数,怎么写,当数字一样的时候不显示一样的数,而显示另一个不一样的数呢?或者还有其他办法,目的就是让这两个数随机产生不相同的两个人,求大神帮忙看看 写下代码!!(急)

long randNumberA;
long randNumberB;

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

void loop() {
  randNumberA = random(20);
  Serial.println(randNumberA);  

  randNumberB = random(20);
  Serial.println(randNumberB);

  delay(1000);
}
回复

使用道具 举报

发表于 2015-12-27 12:21:49 | 显示全部楼层
long randNumberA;
long randNumberB;

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

void loop() {
  int i=0;
  randomSeed(analogRead(A0));
  randNumberA = random(20);
  Serial.print(randNumberA);  
  
  randNumberB = random(20);
  while(randNumberA==randNumberB){
    randNumberB = random(20);
    i++;
  }
  
  Serial.println(" " +String(randNumberB) + "(Repeat:" + i +  ")" );

  delay(1000);
}

//A0采集的随机数种子很重要,看运行截图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-27 18:47:07 | 显示全部楼层
lbh_sd 发表于 2015-12-27 12:21
long randNumberA;
long randNumberB;

非常感谢!                  
回复 支持 反对

使用道具 举报

发表于 2015-12-29 21:17:27 | 显示全部楼层
lbh_sd 发表于 2015-12-27 12:21
long randNumberA;
long randNumberB;

大神我有一个关于随机数问题想要请教。我想按下总开关按钮,然后出现2个随机数(依旧不相同),下一个的随机数要等到你按下下一个按钮之后,才会再显示一个,再按下,再显示一个,循环在一分钟内。怎么设定这个变量X=0或1来控制有没有按下按钮然后去显示这个随机数呢。求大神给下代码做下参考 谢谢了!!!

#define GreenKEY 2            //绿色为总开关按钮
#define KEY1 3          //10个红色按钮
#define KEY2 4
#define KEY3 5
#define KEY4 6
#define KEY5 7
#define KEY6 8
#define KEY7 9
#define KEY8 10
#define KEY9 11
#define KEY10 12
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-30 13:20:43 | 显示全部楼层
gthrtg 发表于 2015-12-29 21:17
大神我有一个关于随机数问题想要请教。我想按下总开关按钮,然后出现2个随机数(依旧不相同),下一个的随 ...

#define KEY 2
#define KEY1 3
#define KEY2 4
#define KEY3 5
#define KEY4 6
#define KEY5 7
#define KEY6 8
#define KEY7 9
#define KEY8 10
unsigned long currentMillis;
long randNumberA1;
long randNumberA2;
long randNumberB1;
long randNumberB2;
int KEY_NUM = 0;int KEY1_NUM = 0;int KEY2_NUM = 0;
int KEY3_NUM = 0;int KEY4_NUM = 0;int KEY5_NUM = 0;
int KEY6_NUM = 0;int KEY7_NUM = 0;int KEY8_NUM = 0;
int a=63;int b=0;int c=0;int interval = 1000;

void setup()
{
  Serial.begin(9600);
  pinMode(KEY,INPUT_PULLUP);
  pinMode(KEY1,INPUT_PULLUP);
  pinMode(KEY2,INPUT_PULLUP);
  pinMode(KEY3,INPUT_PULLUP);
  pinMode(KEY4,INPUT_PULLUP);
  pinMode(KEY5,INPUT_PULLUP);
  pinMode(KEY6,INPUT_PULLUP);
  pinMode(KEY7,INPUT_PULLUP);
  pinMode(KEY8,INPUT_PULLUP);
}
void loop()
{
  if(digitalRead(2)==LOW){b=1;}
  if(b==1){
  unsigned long startMillis = millis();
  for(currentMillis = millis();startMillis + interval > currentMillis;)
  {currentMillis=millis();
  if(a<=59){
  ScanKey1();
  if(KEY1_NUM == 1)
  {
    digitalWrite(randNumberA1,!digitalRead(randNumberA1));
    randNumberA1 = random(23,33);
    Serial.println(randNumberA1);
  }
    ScanKey2();
  if(KEY2_NUM == 1)
  {
    digitalWrite(randNumberA1,!digitalRead(randNumberA1));
    randNumberA1 = random(23,33);
    Serial.println(randNumberA1);
  }
    ScanKey3();
  if(KEY3_NUM == 1)
  {
    digitalWrite(randNumberA1,!digitalRead(randNumberA1));
    randNumberA1 = random(23,33);
    Serial.println(randNumberA1);
  }
    ScanKey4();
  if(KEY4_NUM == 1)
  {
    digitalWrite(randNumberA1,!digitalRead(randNumberA1));
    randNumberA1 = random(23,33);
    Serial.println(randNumberA1);
  }
    ScanKey5();
  if(KEY5_NUM == 1)
  {
    digitalWrite(randNumberA1,!digitalRead(randNumberA1));
    randNumberA1 = random(23,33);
    Serial.println(randNumberA1);
  }
  }
    if(a<=0){a=63;b=0;}
}
  Serial.println(a);
  a--;
  
  if(a==59){
  randNumberA1 = random(23,33);
  Serial.print("A1:");
  Serial.print(randNumberA1);
  Serial.print(",");
  randNumberA2 = random(23,33);
  Serial.print("A2:");
  while(randNumberA1==randNumberA2){
  randNumberA2 = random(23,33);
  c++;}
  Serial.println(" " +String(randNumberA2) + "(Repeat:" + c +  ")" );
  
   randNumberB1 = random(33,43);
  Serial.print("B1:");
  Serial.print(randNumberB1);
  Serial.print(",");
  randNumberB2 = random(33,43);
  Serial.print("B2:");
  while(randNumberB1==randNumberB2){
  randNumberB2 = random(33,43);
  c++;}
  Serial.println(" " +String(randNumberB2) + "(Repeat:" + c +  ")" );
  }
  }
}


void ScanKey()
{
  KEY_NUM = 0;
  if(digitalRead(KEY) == LOW)
  {
    delay(20);
    if(digitalRead(KEY) == LOW)
    {
      KEY_NUM = 1;
      while(digitalRead(KEY) == LOW);
    }
  }
}
void ScanKey1()
{
  KEY1_NUM = 0;
  if(digitalRead(KEY1) == LOW)
  {
    delay(20);
    if(digitalRead(KEY1) == LOW)
    {
      KEY1_NUM = 1;
      while(digitalRead(KEY1) == LOW);
    }
  }
}
void ScanKey2()
{
  KEY2_NUM = 0;
  if(digitalRead(KEY2) == LOW)
  {
    delay(20);
    if(digitalRead(KEY2) == LOW)
    {
      KEY2_NUM = 1;
      while(digitalRead(KEY2) == LOW);
    }
  }
}
void ScanKey3()
{
  KEY3_NUM = 0;
  if(digitalRead(KEY3) == LOW)
  {
    delay(20);
    if(digitalRead(KEY3) == LOW)
    {
      KEY3_NUM = 1;
      while(digitalRead(KEY3) == LOW);
    }
  }
}
void ScanKey4()
{
  KEY4_NUM = 0;
  if(digitalRead(KEY4) == LOW)
  {
    delay(20);
    if(digitalRead(KEY4) == LOW)
    {
      KEY4_NUM = 1;
      while(digitalRead(KEY4) == LOW);
    }
  }
}
void ScanKey5()
{
  KEY5_NUM = 0;
  if(digitalRead(KEY5) == LOW)
  {
    delay(20);
    if(digitalRead(KEY5) == LOW)
    {
      KEY5_NUM = 1;
      while(digitalRead(KEY5) == LOW);
    }
  }
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 09:36 , Processed in 0.041384 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表