如何在两个值之间随机化?

时间:2019-02-20 08:46:02

标签: c# game-development

我试图使Vector2的第一个值等于-7或7。第二个值是-5、5或介于两者之间的任何值。我似乎无法弄清楚如何使第一个值成为-7或7,而在两者之间什么也没有。请帮助

rb2d.velocity = new Vector2(Random(-7,7) , Random.Range(-5,5));

3 个答案:

答案 0 :(得分:4)

您可以使用Next随机生成-​​1或1,如下所示:

Random r = new Random();
int randomSign = r.Next(2) * 2 - 1;

要将其设为7或-7,只需乘以7:

rb2d.velocity = new Vector2(randomSign * 7 , Random.Range(-5,5));

因为这看起来像Unity,所以下面是使用Unity Random.Range方法的方法:

int randomSign = Random.Range(0, 1) * 2 - 1;

答案 1 :(得分:2)

应该是这样的:

 int[] numbers = new int[] { -7, 7 };
  var random = new Random();
  vrb2d.velocity = new Vector2(numbers [random.Next(2)] , Random.Range(-5,5));

将所有数字放入向量中并随机选择索引。很容易。

答案 2 :(得分:0)

这是您的问题的解决方案:

Random random = new Random();

// Get a value between -5 and 5. 
// Random.Next()'s first argument is the inclusive minimum value, 
// second argument is the EXCLUSIVE maximum value of the desired range.
int y = random.Next(-5, 6);

// Get value of either 7 or -7
int[] array = new int[] { 7, -7 };
int x = array[random.Next(array.Length)]; // Returns either the 0th or the 1st value of the array.

rb2d.velocity = new Vector2(x, y);

重要的是要知道 random.Next(-5,6); 返回值 -5和5之间。乍一看似乎不是-5和6。 (检查功能说明。)