---
description: >-
  在聽歌的時候不知道大家是從頭開始聽，還是讓播放器用隨機的方式呢？如果你用的是隨機的方式，有沒有注意到，播放器會每次都隨便選一曲，還是以隨機的方式先排好順序，再逐一播放呢？
---

# 隨機歌單背後的方法

如果是第一種方法的話，有可能會在短時間之間又重複聽到相同的曲子，但如果是第二種方法的話，那麼就一定要所有的歌曲都聽過一遍後，才會再重複喔。

為了示範隨機歌單的例子，我們還是需要一個清單，假設我們把它命名為list，然後建立一個用來產生有序資料的索引變數index，則產生一個有序數字清單的程式積木如下：

![](https://3758851535-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8PFR2UvTkWwSK8m0%2F-LSyMFN4rcrbbsVtCXQe%2F-LSyMYzGAjULXis_yrwf%2F2018-12-05_20-33-53.png?alt=media\&token=cd2edb2c-2c64-42db-b1f4-b5d817d5da12)

建立完成之後，只要程式一執行，就可以在舞台上看到如下所示的清單：

![](https://3758851535-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8PFR2UvTkWwSK8m0%2F-LSyMFN4rcrbbsVtCXQe%2F-LSyMptE8yjCHrIF2I8J%2F2018-12-05_20-37-06.png?alt=media\&token=8fc5b759-60df-4c0c-ab79-b02278bf7073)

接著，我們用來打亂數字順序的方法是，設定兩個變數分別是x以及y，然後重複10次，每一次都隨機選擇1\~10之間的數字做為x和y的內容，而x和y的目的就是要用來指出兩個要交換內容的項目之索引值。此外，為了要交換索引的內容項目，還需要一個暫存的變數，我們把它命名為temp，因此，除了清單list之外，這個程式還需要以下的變數：

![](https://3758851535-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8PFR2UvTkWwSK8m0%2F-LSyMFN4rcrbbsVtCXQe%2F-LSyNQCJrE5kuuh_AWw8%2F2018-12-05_20-34-09.png?alt=media\&token=052719ec-9722-4998-96de-2209ef580631)

打亂順序的程式積木如下：

![](https://3758851535-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8PFR2UvTkWwSK8m0%2F-LSyMFN4rcrbbsVtCXQe%2F-LSyNWmDx4vGW8mYrXLx%2F2018-12-05_20-34-24.png?alt=media\&token=e0caa1e5-7f1f-45a1-b187-a16fe6e24550)

在這個程式積木中要特別留意的是，x和y指的是索引，而temp變數中放的則是實際的項目內容。完成的程式積木如下所示：

![](https://3758851535-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8PFR2UvTkWwSK8m0%2F-LSyMFN4rcrbbsVtCXQe%2F-LSyNjwAxAfwELprHg5L%2F2018-12-05_20-34-37.png?alt=media\&token=26e80bef-2a4b-4051-ae5c-b5224ec11481)

此程式執行完畢之後，可以看到清單中的數字順序就被打亂了，而且清單中的數字不會有重複的情形發生喔。

![](https://3758851535-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LMo8PFR2UvTkWwSK8m0%2F-LSyMFN4rcrbbsVtCXQe%2F-LSyO2aT0LxJkIEAWsBX%2F2018-12-05_20-42-20.png?alt=media\&token=beb9ffa0-250e-462b-af02-3aa702db3e19)

學會了這項技能，同學們知道如何製作發牌程式了嗎？

