将GetHashCode()用于随机持久索引

问题描述 投票:1回答:3

我有一个标识客户的字符串。在我的网站上,我为尚未设置个人头像的客户提供3张不同的图片。我想将这些图像之一随机地与客户相关联,但在会话之间不改变图像。

使用GetHashCode是否有问题,如以下代码所示?

switch (CustomerIdString.GetHashCode() % 3)
{
    case 0:
        return "NoProfileImage0.png";
        break;

    case 1:
        return "NoProfileImage1.png";
        break;

    case 2:
    default:
        return "NoProfileImage2.png";
        break;
}

我知道还有其他解决方案,例如-

  • 使用更好的哈希库
  • 使用客户ID作为随机数生成器中的种子
  • 根据客户记录保留图像名称

但是我喜欢使用GetHashCode()的简单性(没有添加的库,没有DB代码。)>

我有一个标识客户的字符串。在我的网站上,我为尚未设置个人头像的客户提供3张不同的图片。我想将这些图像之一随机地关联到客户,...

asp.net .net gethashcode
3个回答
1
投票

我发现您的示例代码在我的应用程序中很有用,因为我正在做类似的事情。但是,我发现我需要在GetHashCode周围使用Math.Abs​​,因为有时它会返回负数:



0
投票

我看不到任何问题,尽管它根本不会是随机的,但根据CustomerIdString的值,它将始终是同一张图像。

© www.soinside.com 2019 - 2024. All rights reserved.