for(int i = 0; i < gos.Length; i++)
{
float randomspeed = (float)Math.Round (UnityEngine.Random.Range (1.0f, 15.0f));
floats.Add (randomspeed);
_animator [i].SetFloat ("Speed", randomspeed);
}
现在我得到的只是1到15之间的整数。我的意思是我没有得到像1.0或5.4或9.8或14.5这样的数字这样的速度值是合乎逻辑的吗?如果是这样,我如何才能使随机数也包括浮点数?
其次,我如何确保没有相同的数字?
gos长度为15
答案 0 :(得分:4)
正如另一个答案所述,你不会得到小数值,因为你调用Math.Round()
,其明确目的是四舍五入到最接近的整数(当你按照你的方式调用时)。
至于防止重复,我质疑是否需要确保不重复。首先,您选择的范围内的可能值的数量足够大,以至于获得重复的机会非常小。其次,看起来你正在为一些游戏对象选择随机速度,在我看来,在这种情况下,偶尔你会发现一对具有相同速度的游戏对象,这是完全可信的。 / p>
那就是说,如果你仍然想这样做,我会反对其他答案推荐的线性搜索。游戏逻辑应该合理有效,并且在这种情况下意味着使用哈希集。例如:
HashSet<float> values = new HashSet<float>();
while (values.Count < gos.Length)
{
float randomSpeed = UnityEngine.Random.Range(1.0f, 15.0f);
// The Add() method returns "true" if the value _wasn't_ already in the set
if (values.Add(randomSpeed))
{
_animator[values.Count - 1].SetFloat("Speed, randomSpeed);
}
}
// it's not clear from your question whether you really need the list of
// floats at the end, but if you do, this is a way to convert the hash set
// to a list
floats = values.ToList();
答案 1 :(得分:3)
你的第一个问题:如果你使用Math.Round(),你永远不会得到像5.4这样的数字......
第二个问题:在添加号码之前,您可以检查号码是否存在:
private float GenerateRandomSpeed()
{ return (float)UnityEngine.Random.Range (1.0f, 15.0f);}
for(int i = 0; i < gos.Length; i++)
{
float randomspeed= GenerateRandomSpeed();
while (floats.any(x=>x==randomspeed))
randomspeed=GenerateRandomSpeed();
floats.Add (randomspeed);
_animator [i].SetFloat ("Speed", randomspeed);
}
我没有测试它,但我希望它可以引导你找到答案。
答案 2 :(得分:3)
您没有获得任何小数的原因是因为您正在使用Math.Round,这会将浮点数提升到下一个整数或降低它。
至于它是否符合逻辑,它取决于。至于你的情况,动画速度通常由浮点数完成,因为它可以平稳地加速和减速。
还要回答你关于如何避免重复同一个浮点数的问题..这本身已经不太可能了,请尝试这样做:
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<form id="ad-form">
<div class="container">
<div class="col-lg-12">
<div class="form-group">
<h1 class="text-center">Wickliffe Italian-American Club</h1>
<h4 class="text-center">2016 Pat O'brien Chevrolet Cleveland Challenge Cup of Bocce Advertisement Form</h4>
<p class="bg-danger text-center">Paragraph</p>
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="company">
<h5>Company</h5>
</label>
<input type="text" class="form-control" id="company" placeholder="Company Name" />
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="fl-name">
<h5>Contact Name</h5>
</label>
<input type="text" required class="form-control" id="fl-name" placeholder="First and Last Name" />
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="address">
<h5>Address</h5>
</label>
<input type="text" required class="form-control" id="address" placeholder="Address, City, State, Zip" />
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="phone">
<h5>Phone Number</h5>
</label>
<input type="text" required class="form-control" id="phone" placeholder="Contact Phone Number" />
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="email">
<h5>Email</h5>
</label>
<input type="email" required class="form-control" id="email" placeholder="Email Address" />
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="reference">
<h5>Referred by Italian-American Club Member</h5>
</label>
<input type="text" required class="form-control" id="reference" placeholder="Reference Name" />
</div>
</div>
<div class="col-lg-12">
<div class="form-group">
<h5>Please select appropriate ad size below:</h5>
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios1" value="option1"><strong>$125.00</strong>
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios2" value="option2"><strong>$75</strong>
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios3" value="option3"><strong>$35.00</strong>
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="optionsRadios" id="optionsRadios4" value="option4"> <strong>$15.00</strong>
</label>
</div>
</div>
</div>
<div class="col-lg-12">
<div class="form-group">
<input type="submit" class="btn btn-default" />
</div>
</div>
</div>
</form>