【问题标题】:How do I make my code perform a random function如何让我的代码执行随机函数
【发布时间】:2010-11-16 02:28:50
【问题描述】:

我希望我的代码在三个不同的函数之间随机化:

private void BackPack1()
{
    Player.Skin.SetComponent((PedComponent)3, 3, 0);
}

private void BackPack2()
{
    Player.Skin.SetComponent((PedComponent)3, 3, 1);
}

private void BackPack3()
{
    Player.Skin.SetComponent((PedComponent)3, 3, 2);
}

有什么简单的方法吗?

【问题讨论】:

  • 非常感谢,现在可以了,我不能让这个功能正常工作,我只是在学习这个东西

标签: c# .net visual-studio scripting


【解决方案1】:
private static Random r = new Random();

private void BackPack() {
    int i = r.Next(0,3);
    Player.Skin.SetComponent((PedComponent)3, 3, i); 
}

只有你的方法调用的最后一个参数发生了变化,所以我假设你想随机化那个参数。

【讨论】:

  • 为什么要使 Random 对象静态?无论如何,空的构造函数都会使用基于时间的值来播种它。
  • 保证两个对象同时生成,不会生成相同的“随机”值。而且更便宜。
  • 在这种情况下,谁在乎两个对象是否生成相同的值?反正你只有三种可能。
  • 总有这样的变化,这段代码用在一段代码中,为了支持更多的可能性而改变。这样这个场景会更好地工作。
  • 在更大的方案中,无论哪种方式都可以实现零差异。
【解决方案2】:

此代码随机调用 BackPackX 函数之一

Action[] methods = new Action[] { BackPack1, BackPack2, BackPack3 };
Random rnd = new Random();
int index = rnd.Next(3);
Action method = methods[index];
method();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多