专栏首页学习日记Golang洗牌算法

Golang洗牌算法

简介

主要思路为每次随机挑选一个值,放在数组末尾。然后在n-1个元素的数组中再随机挑选一个值,放在数组末尾,以此类推。注意,一定要设置随机种子,否则每次返回的值是一样的。

code

func shuffle(nums []int) []int {
	rand.Seed(time.Now().UTC().UnixNano())
	for i := len(nums); i > 0; i-- {
		last := i - 1
		idx := rand.Intn(i)
		nums[last], nums[idx] = nums[idx], nums[last]
	}
	return nums
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Leetcode Golang 75. Sort Colors.go

    版权声明:原创勿转 https://blog.csdn.net/anakinsun/arti...

    anakinsun
  • Leetcde Golang 26. Remove Duplicates from Sorted Array.go

    版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/88902453

    anakinsun
  • Leetcode Golang 18. 4Sum.go

    版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/88935159

    anakinsun
  • Leetcde Golang 26. Remove Duplicates from Sorted Array.go

    版权声明:原创勿转 https://blog.csdn.net/anakinsun/article/details/88902453

    anakinsun
  • leetcode: explore-array-28 移动零

    https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/1/ar...

    用户7685359
  • LeetCode 16 3Sum Closest

    ShenduCC
  • Leetcode 628. 三个数的最大乘积 (数学)

    解题思路 方法一:排序 我们将数组进行升序排序,如果数组中所有的元素都是非负数,那么答案即为最后三个元素的乘积。

    glm233
  • Leetcode 15 三数之和(双指针,去重)

    给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三...

    glm233
  • LeetCode刷题DAY 10:三数之和

    给定一个整数数组nums,判断nums中是否存在三个元素 a,b,c ,使得 a + b + c = 0 。如不存在返回[],如存在返回所有满足条件且不重复的答...

    三猫
  • Array - 508. Wiggle Sort

    Given an unsorted array nums, reorder it in-place such that

    用户5705150

扫码关注云+社区

领取腾讯云代金券