我阅读了函数Intn https://golang.org/pkg/math/rand/#Intn的文档,但我不明白它们的含义 我知道随机与伪随机不同。但是,我如何模拟1到1000范围内的随机?
<form action="upload_file" method="POST" enctype="multipart/form-data">
<table id="submitResumeTable">
<tr>
<td style="padding-top:12px;">Name</td>
<td><input type="text" name="resName"></td>
</tr>
<tr>
<td style="padding-top:12px;">Telephone</td>
<td><input type="text" name="resPhone"></td>
</tr>
<tr>
<td style="padding-top:12px;">Email</td>
<td>
<input type="text" name="resEmail">
<br/>
<br/>
<p style="margin-bottom:-3px; font-size:12px">Please upload a Word or PDF file by selecting "Choose File" below:</p>
</td>
</tr>
<tr>
<td style="padding-top:12px;">Resume</td>
<td>
<input style="padding:0; width:100%" type="file" name="resFile">
</td>
</tr>
<tr>
<td style="padding-top:12px;">Message</td>
<td>
<textarea name="resMsg" rows="6"></textarea>
</td>
</tr>
</table>
<br/>
<input type="submit" id="submitResBtn" value="Submit">
</form>
答案总是879
@app.route("/upload_file", methods=["POST"])
def upload_file():
file = request.files["resFile"]
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config["UPLOAD_FOLDER"], filename))
emailTitle = ("%s's Resume" % request.form["resName"])
msg = Message(emailTitle,sender="test@gmail.com",recipients=["test@test.com"])
msg.body = ("Name: %s\nPhone: %s\nE-mail: %s\n\nMessage:\n%s" % (request.form["resName"],request.form["resPhone"],request.form["resEmail"],request.form["resMsg"]))
filepath = "static/uploads/" + filename
splitfile = filename.split(".")
otherpath = splitfile[0] + '/' + splitfile[1]
with app.open_resource(filepath) as fp:
msg.attach(filename,otherpath,fp.read())
mail.send(msg)
else:
return render_template("send_resume.html", pageHeading="Send Us Your Resume", uploadStatus=2) # upload unsuccessful
return render_template("send_resume.html", pageHeading="Send Us Your Resume", uploadStatus=1) # upload successful
答案总是81
答案 0 :(得分:2)
您需要“种子”随机数生成器。这就像告诉伪随机数生成器如何生成数字的代码。现在,你不能只给这个号码,或者你每次都会生成相同的号码。通常,良好的做法是以当前时间播种。
package main
import (
"fmt"
"math/rand"
"time" #ADDED
)
func main() {
// Seed should be set once, better spot is func init()
rand.Seed(time.Now().UTC().UnixNano()) #ADDED
fmt.Println(randInt(1, 1000))
}
func randInt(min int, max int) int {
return min + rand.Intn(max-min)
}
现在每次调用randInt()
函数时,它都会使用从调用种子函数开始生成随机数的时间。
答案 1 :(得分:1)
两点。首先,正如math/rand
状态的文档位于顶部:
如果每次运行都需要不同的行为,请使用Seed函数初始化默认Source。
如果你不用每次运行的不同种子(例如时钟时间)播种它,每次运行都会得到相同的结果,因为默认种子总是1。
其次,如果您在Playground上运行此操作,则每次都会得到相同的结果,因为它会缓存执行结果。如果代码相同,结果将是相同的。