Hỏi cách random mà không trùng nhau

Chuyện là mình muốn làm cho code nó random mà không trùng nhau Nhưng tại vì mới bước vào con đường lập trình nên vẫn còn thiếu kinh nghiệm nên mấy bác có kinh nghiệm nào có thể chia sẽ về việc này không?
Đây là bài code của mình:

#include <Servo.h>
#include <Stdlib.h>
Servo myservo;
volatile long A;
const int sensor=11; 
const int Servo_pin1 = 2;
const int Servo_pin2 = 4;
const int Servo_pin3 = 6;
const int Servo_pin4 = 8;
const int Servo_pin5 = 10;
const int Servo_pin6 = 12;
unsigned long changeTime;//time since button pressed
Servo myservo2;
Servo myservo4;
Servo myservo6;
Servo myservo8;
Servo myservo10;
Servo myservo12;
void setup() {
        myservo2.attach(Servo_pin1);
        myservo4.attach(Servo_pin2);
        myservo6.attach(Servo_pin3);
        myservo8.attach(Servo_pin4);
        myservo10.attach(Servo_pin5);   
        myservo12.attach(Servo_pin6);    
          
        
       
        pinMode(sensor,INPUT);
        Serial.begin(9600);
}

void loop() {     
          int value=digitalRead(sensor);
        if(value && (millis() - changeTime)> 3000){
       A=random(0.7);
       
        
    switch (A) {
      case 1:   
  Serial.println("TOUCHED1 ");
      myservo2.write(179);
        delay(1000);
     myservo2.write(90);
           delay(1000);
    
           break;
      case 2:   
 Serial.println("TOUCHED2 ");
     myservo4.write(179);
        delay(1000);
     myservo4.write(90);
               delay(1000);
        break;
      case 3:
      Serial.println("TOUCHED3 ");
        myservo6.write(179);
        delay(1000);
     myservo6.write(90);
      delay(1000);
        break;       
              case 4:
      Serial.println("TOUCHED4 ");
        myservo8.write(179);
        delay(1000);
     myservo8.write(90);
      delay(1000);
        break;   
             case 5:
      Serial.println("TOUCHED5 ");
        myservo10.write(179);
        delay(1000);
     myservo10.write(90);
      delay(1000);
        break;    
             case 6:
      Serial.println("TOUCHED4 ");
        myservo12.write(179);
        delay(1000);
     myservo12.write(90);
      delay(1000);
        break;  
     }
}
delay(1000);
}
1 Like

Bạn có thể giải thích hơn là bạn muốn làm cho đoạn code nào random không? (Mình khá chắc là ở hàm loop), với lại nhớ format code trước khi đăng bài để code dễ đọc hơn nhé.

1 Like

https://www.arduino.cc/reference/en/language/functions/random-numbers/random/

2 Likes

Nếu bạn muốn chọn ngẫu nhiên 1 hoán vị của [1, 2, 3, 4, 5, 6] thì dùng mảng nhé :smiley: thuật toán gọi là Knuth shuffle.

1 Like

Mình muốn làm đoạn code phần Loop để nó random ở phần random 6 số ngẫu nhiên A để hoạt động cho phần Switch mà không trùng nhau để mình hoàn thiện trò chơi guangzhou games manufacturer eye fast chips quick hands mà tìm mãi vẫn không biết làm sao để random không trùng nhau.

Có thể áp dụng cách đó lên C++ arduino không bạn ?

Arduino có mảng mà bạn.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?