【问题标题】:How to determine if a GUID is odd or even in SWIFT? [closed]如何确定 SWIFT 中的 GUID 是奇数还是偶数? [关闭]
【发布时间】:2021-06-07 09:29:57
【问题描述】:

我有一个用户列表,它们都有一个 GUID 标识符。 我想将用户随机分成两个池以执行 A/B 测试。 如果我可以对标识符做一个奇数/偶数,它将使我能够做到这一点。

如何在 SWIFT 中对字符串属性中的 GUID 进行奇数/偶数检查?

是否对哈希进行了模二,我该怎么做?

【问题讨论】:

  • 你肯定尝试过某事。 SO 不是免费的代码编写网站。如果不表现出至少一些(研究)努力,您就不太可能在这里收到答案。
  • “我想将两个池中的用户随机分开以执行 A/B 测试”不使用该 UUID 怎么办,只是随机放入不同的组?
  • @Larme 你将如何分成大约两组。均匀地没有种子?我有无限数量的“批次”/用户页面,所以我永远不会一次拥有所有用户。不过,我可以在数组中的位置上做奇数/偶数。
  • %2 确实在索引上,这就是我的想法,或者是种子,但我不确定您的确切需求
  • @DávidPásztor 我实际上还没有尝试过什么,因为我不知道该怎么做。我知道如何使用模数来做奇数/偶数,我知道如何使用 UUID。但是模数对数字进行操作,而 UUID 是一个字符串,所以我要问的是如何一起使用它们。如果我只是想知道怎么做,已经有很多答案了。

标签: swift guid


【解决方案1】:

Mod 2 仅适用于数字,所以是的,通过获取 UUID/GUID 的哈希值,然后应用 mod 函数就足够了:

let uuid = UUID().uuidString
let hashValue = uuid.hash

if hashValue.quotientAndRemainder(dividingBy: 2).remainder == 0 {
    print("even")
} else {
    print("odd")
}

.hashString bt 默认可用,因此您可以直接使用它


PS:
hashValue.quotientAndRemainder(dividingBy: 2).remainder

hashValue % 2

无论你的船是什么

【讨论】:

  • 使用哈希值的有趣想法。虽然为什么有人会写quotientAndRemainder(dividingBy: 2).remainder 而不仅仅是% 2 我无法理解:)
  • @mojuba 是的。嗯...% 2 只给出余数,而quotientAndRemainder(dividingBy:) 给出商和余数,所以使用起来更灵活documentation
  • 是的,长格式也适用于浮点数。有趣的是,% 在 Swift 中为 FP 工作,但随后被删除以支持此功能。但无论如何,较短的形式(如果可用)总是无条件地优于较长的形式。读起来少了。
  • @mojuba 啊,是的,% 也不支持浮点数。
猜你喜欢
  • 2010-09-14
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 2022-01-22
  • 2011-03-26
  • 1970-01-01
相关资源
最近更新 更多