You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Element列表随机选取两个不同Id生成Link实例?

如何为Link实例生成两个不同的随机Element.Id?

没问题,我来帮你解决这个问题!你需要给每个Link实例传入两个不同的、随机选取的Element.Id,下面是具体的实现思路和代码:

核心思路

  1. 提前实例化一个Random对象:不要在循环内每次创建Random,因为它依赖系统时钟,频繁创建会导致生成重复的随机数。
  2. 为每个Link生成两个不同的随机索引:通过索引从ListOfElements中获取对应的Id,确保两个索引不重复,就能保证ElementOne和ElementTwo的Id永远不等。

完整代码示例

public class Element 
{ 
    public Element() { this.Id = Guid.NewGuid(); } 
    public Guid Id { get; set; } 
} 

public class Link 
{ 
    public Link(Guid ElementOne, Guid ElementTwo) 
    { 
        this.ElementOne = ElementOne; 
        this.ElementTwo = ElementTwo; 
    } 
    public Guid ElementOne { get; set; } 
    public Guid ElementTwo { get; set; } 
}

// 填充元素列表
List<Element> ListOfElements = new List<Element>();
for (int i = 0; i < 10000; i++)
{
    ListOfElements.Add(new Element());
}

// 初始化随机数生成器
var random = new Random();
List<Link> ListOfLinks = new List<Link>();

// 填充链接列表
for (int i = 0; i < 5000; i++)
{
    // 获取第一个随机Element的Id
    int firstIndex = random.Next(ListOfElements.Count);
    Guid firstId = ListOfElements[firstIndex].Id;
    
    // 获取第二个随机Element的Id,确保和第一个不同
    int secondIndex;
    do
    {
        secondIndex = random.Next(ListOfElements.Count);
    } while (secondIndex == firstIndex);
    Guid secondId = ListOfElements[secondIndex].Id;
    
    ListOfLinks.Add(new Link(firstId, secondId));
}

额外说明

  • 你的Element列表有10000个元素,重复选中同一个索引的概率极低,所以do-while循环几乎不会有多次迭代的情况,性能完全没问题。
  • 如果想要避免极端情况下的循环(比如列表元素极少时),也可以先将所有Element.Id存入一个临时列表,再随机抽取两个不同的Id,但对于你的场景,上面的写法已经足够简单高效。

内容的提问来源于stack exchange,提问作者user9145305

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:21:13