การสร้างตัวอย่างจาก Permutation
จากที่ได้ศึกษาในแบบฝึกหัดก่อนหน้า เราต้องสร้างตัวอย่างจาก permutation โดยสลับค่าที่ตำแหน่งเดียวกันในอาร์เรย์ semi_times และ final_times แบบสุ่ม ให้เขียนฟังก์ชันที่มี signature เป็น swap_random(a, b) ซึ่งคืนค่าอาร์เรย์ที่มีการสลับค่าระหว่าง a และ b ในตำแหน่งที่เลือกแบบสุ่ม
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
กรณีศึกษาด้านการคิดเชิงสถิติ
คำแนะนำการฝึกหัด
- กำหนดฟังก์ชันที่มี signature เป็น
swap_random(a, b)โดยทำดังนี้- สร้างอาร์เรย์
swap_indsที่มีความยาวเท่ากับอาร์เรย์ input โดยแต่ละค่าเป็นTrueด้วยความน่าจะเป็น 50/50 คำใบ้: ใช้np.random.random()พร้อม keyword argumentsize=len(a)ค่าที่ได้แต่ละตัวที่น้อยกว่า 0.5 ให้เป็นTrue - สร้างสำเนาของ
aและbชื่อว่าa_outและb_outตามลำดับ โดยใช้np.copy() - ใช้ Boolean indexing ร่วมกับอาร์เรย์
swap_indsเพื่อสลับค่าที่เหมาะสมจากbเข้าไปในa_outและจากaเข้าไปในb_out - คืนค่า
a_outและb_out
- สร้างอาร์เรย์
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
def ____(____, ____):
"""Randomly swap entries in two arrays."""
# Indices to swap
swap_inds = ____ < ____
# Make copies of arrays a and b for output
a_out = ____
b_out = ____
# Swap values
____[____] = ____[____]
____[____] = ____[____]
return a_out, b_out