scala> Random.shuffle((1 to 10).toSet)
res10: scala.collection.immutable.Set[Int] = Set(5, 10, 1, 6, 9, 2, 7, 3, 8, 4)
scala> Random.shuffle((1 to 10).toSet)
res11: scala.collection.immutable.Set[Int] = Set(5, 10, 1, 6, 9, 2, 7, 3, 8, 4)
scala> Random.shuffle((1 to 10).toSet)
res12: scala.collection.immutable.Set[Int] = Set(5, 10, 1, 6, 9, 2, 7, 3, 8, 4)
scala> Random.shuffle((1 to 10).toList)
res13: List[Int] = List(3, 9, 8, 5, 7, 6, 10, 2, 1, 4)
scala> Random.shuffle((1 to 10).toList)
res14: List[Int] = List(5, 10, 2, 9, 4, 7, 8, 6, 1, 3)
scala> Random.shuffle((1 to 10).toList)
res15: List[Int] = List(5, 9, 10, 6, 8, 3, 4, 1, 7, 2)
Vì vậy, xáo trộn có thể xử lý Lists tốt, nhưng không phải bộ? Không thể đặt bộ đệm? Tại sao res10 == res11 == res12?Hành vi của ngẫu nhiên trên Set vs Danh sách sử dụng scala.util.Random
Đơn khiếu nại của bạn không phải về hành vi của ngẫu nhiên mà là hành vi của Set. Hợp đồng Set không ngụ ý bảo quản trật tự - thuận tiện cho phép tối ưu hóa như sao lưu Set bằng hashtable - do đó gọi toSet là lời mời sắp xếp lại bộ sưu tập của bạn. –