Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ใช้ Rand10() โดยใช้ Rand7() ใน C++


สมมติว่าเรามีฟังก์ชัน rand7 ซึ่งสร้างจำนวนเต็มสุ่มที่สม่ำเสมอในช่วง 1 ถึง 7 เราต้องเขียนฟังก์ชันอื่น rand10 ซึ่งสร้างจำนวนเต็มสุ่มที่สม่ำเสมอในช่วง 1 ถึง 10 เราไม่สามารถใช้ฟังก์ชันไลบรารีบางฟังก์ชันเพื่อสร้างตัวเลขสุ่มได้

สมมติว่าเราต้องการตัวเลขสุ่มสองตัว ดังนั้นจึงอาจเป็น [8,10]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • rand40 :=40
  • ในขณะที่ rand40>=40
    • rand40 :=(rand7() - 1) * 7 + (rand7() – 1)
  • ส่งคืน rand40 mod 10 + 1

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
int rand7(){
   return 1 + rand() % 7;
}
class Solution {
   public:
   int rand10() {
      int rand40 = 40;
      while(rand40 >= 40){
         rand40 = (rand7() - 1) * 7 + (rand7() - 1);
      }
      return rand40 % 10 + 1;
   }
};
main(){
   srand(time(NULL));
   Solution ob;
   cout << (ob.rand10()) << endl;
   cout << (ob.rand10()) << endl;
   cout << (ob.rand10()) << endl;
}

อินพุต

Call the function three times

ผลลัพธ์

2
2
6