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

สุ่มอาร์เรย์ใน Python


สมมติว่าเรามีอาร์เรย์ A เราต้องสับเปลี่ยนชุดตัวเลขโดยไม่ซ้ำกัน ดังนั้นหากอินพุตเป็น [1,2,3] สำหรับการสับเปลี่ยน มันจะเป็น [1,3,2] หลังจากรีเซ็ตแล้ว หากเราสับใหม่อีกครั้ง มันจะเป็น [2,3,1]

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

  • จะมีวิธีการต่างๆ สิ่งเหล่านี้คือ init(), reset(), shuffle() สิ่งเหล่านี้จะทำหน้าที่ดังต่อไปนี้ -

  • init จะเป็นแบบ −

  • ต้นฉบับ :=สำเนาของอาร์เรย์ที่กำหนด

  • อุณหภูมิ :=nums

  • ดัชนี :=รายการตัวเลขตั้งแต่ 0 ถึงความยาวของตัวเลข – 1

  • reset() จะคืนค่าอาร์เรย์เดิม

  • shuffle() จะเป็น −

  • หากความยาวของ temp เป็น 0 ให้ส่งคืนอาร์เรย์ว่าง

  • i :=เลือกสุ่มดัชนีหนึ่งจากอาร์เรย์ดัชนี j :=เลือกดัชนีอื่นจากอาร์เรย์ดัชนีแบบสุ่ม

  • สลับองค์ประกอบที่มีอยู่ในดัชนี i และ j

  • อุณหภูมิกลับ

  • วิธีอื่นที่เรียกว่า getAllPermutation() จะใช้ nums, i, ในตอนแรก i =0 จะเป็นแบบ −

  • สกุลเงิน :=ผม

  • ถ้า i =ความยาวของ nums แล้ว

    • แทรกสำเนาของอาร์เรย์ nums ลงในอาร์เรย์อื่นที่เรียกว่าทั้งหมด

    • กลับ

  • สำหรับ j :=curr ถึงความยาวของ nums

    • สลับองค์ประกอบที่ดัชนี j และสกุลเงินจาก nums

    • โทร getAllPermutation(nums,curr + 1)

    • สลับองค์ประกอบที่ดัชนี j และสกุลเงินจาก nums

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

ตัวอย่าง

import random
class Solution(object):
   def __init__(self, nums):
      self.original = [x for x in nums]
      self.temp = nums
      self.indices = [x for x in range(len(nums))]
   def reset(self):
      return self.original
   def shuffle(self):
      if not len(self.temp):
         return []
      i = random.choice(self.indices)
      j = random.choice(self.indices)
      self.temp[i], self.temp[j] = self.temp[j], self.temp[i]
      return self.temp
ob = Solution([1,2,3])
print(ob.shuffle())
print(ob.reset())
print(ob.shuffle())

อินพุต

Initialize with [1,2,3] , then call shuffle(), reset() and shuffle()

ผลลัพธ์

[2, 1, 3]
[1, 2, 3]
[2, 3, 1]