[code=Asp]
function mistake(preString)
Dim texts
Dim seed
Dim i,length
prestring = trim(preString)
length = len(preString)
seed = length
Randomize(length)
texts = "" for i = 1 to length
seed = int(94*rnd(-asc(mid(preString,i,1))-seed*asc(right(prestring,1)))+32)
texts = texts & chr(seed) & chr(int(94*rnd(-seed)+32))
next dim dist
dist=""
for i = 1 to len(texts)
if mid(texts,i,1)<>"'" then
dist=dist+mid(texts,i,1)
end if
next
mistake = dist
end function
[/code]
function mistake(preString)
Dim texts
Dim seed
Dim i,length
prestring = trim(preString)
length = len(preString)
seed = length
Randomize(length)
texts = "" for i = 1 to length
seed = int(94*rnd(-asc(mid(preString,i,1))-seed*asc(right(prestring,1)))+32)
texts = texts & chr(seed) & chr(int(94*rnd(-seed)+32))
next dim dist
dist=""
for i = 1 to len(texts)
if mid(texts,i,1)<>"'" then
dist=dist+mid(texts,i,1)
end if
next
mistake = dist
end function
[/code]
解决方案 »
- C#界面实时显示CPU占用太高,怎么解决?
- 关于vs2010自动创建项目的Login.aspx的登陆按钮
- java中的FileChannel和MappedByteBuffer在C#中应该用什么来替代
- 为什么触发不到OnSessionEnding
- 请问timer和一个循环的线程区别在哪?
- 各位高手帮帮忙!
- 文本框和下拉列表text的值修改后,重新绑定不到,求助老鸟
- 用StreamWriter写文件时,win2003下运行“访问被拒绝”2000下运行正常
- 使用SqlDataReader时只能对一个SQL查询结果进行操作,若我要同时对多个SQL查询结果进行操作,该怎么办?
- MessageBox如何显示多按钮(如OKCancel)
- Form的嵌入问题(WinForm)
- 如何创建一个圆角窗体。
参数
Number
可选。一个 Single 值或任何有效的 Single 表达式。返回值
如果 Number 为 Rnd 生成
小于零
每次都相同的数字,并将 Number 用作种子。
大于零
序列中的下一个随机数。
等于零
最近生成的数字。
未提供
序列中的下一个随机数。
大概是这样:
double rnd(int param)
{
return 0; // TODO : 参考内核代码编写
}public string mistake(string preString)
{
preString = preString.Trim();
int length = preString.Length;
int seed = length;
Random random = new Random(length);
string texts = string.Empty;
for (int i = 0; i < length; i ++)
{
seed = (int)(94 * rnd(-preString[i]) - seed * preString[length - i - 1] + 32);
texts += (Char)seed + (Char)((int)(94 * rnd(-seed) + 32));
}
return texts.Replace("'", "");
}
{
string texts;
int seed;
int i,length;
prestring = prestring.Trim();
length = prestring.Length;
seed = length;
Random rand1 = new Random();
rand1.Next(length);
texts = "";
for (i = 1; i <= length; i++)
{
seed = 94 * rand1.Next(-prestring.Substring(i, 1)[0]) - seed * prestring.Substring(1, 1)[0] + 32;
} string dist;
dist ="";
for (i = 1; i <= texts.Length; i++)
{
if (texts.Substring(i, 1) != ",")
dist = dist + texts.Substring(i, 1);
}
return dist;
}
public string mistake(string preString)
{
preString = preString.Trim();
int length = preString.Length;
int seed = length;
VBMath.Randomize(length);
Random r = new Random(seed);
string texts = "";
for (i = 0; i < length; i++) {
seed = (int)(94 * VBMath.Rnd( -(int)preString[i] - seed * (int)preString[length - 1]) + 32);
texts += (char)seed + (char)(int)(94 * VBMath.Rnd(-seed) + 32);
}
string dist = "";
for (i = 0; i < texts.Length; i++) {
if (texts[i] != '\'') {
dist += texts[i];
}
}
return dist;
}
public string mistake(string preString)
{
preString = preString.Trim();
int length = preString.Length;
int seed = length;
Microsoft.VisualBasic.VBMath.Randomize(length);
string texts = string.Empty;
for (int i = 0; i < length; i ++)
{
seed = (int)(94 * Microsoft.VisualBasic.VBMath.Rnd(-preString[i]) -
seed * preString[length - i - 1] + 32);
texts += (Char)seed + (Char)((int)(94 * rnd(-seed) + 32));
}
return texts.Replace("'", "");
}
Dim texts as string
Dim seed as integer
Dim i as integer,length as integer
prestring = trim(preString)
length = len(preString)
seed = length
Randomize(length)
texts = "" for i = 1 to length
seed = int(94*rnd(-asc(mid(preString,i,1))-seed*asc(right(prestring,1)))+32)
texts = texts & chr(seed) & chr(int(94*rnd(-seed)+32))
next dim dist as string
dist=""
for i = 1 to len(texts)
if mid(texts,i,1) <> "'" then
dist=dist+mid(texts,i,1)
end if
next
mistake = dist
end function
sub main()
msgbox(mistake("112233"))
end sub
end module
改了一下.在vb.net 下编译没问题.
输出的结果也符合LZ的要求.
可以用vb.net编译成一个dll给c#用.
using Microsoft.VisualBasic;public string mistake(string preString)
{
byte[] preBytes = Encoding.Default.GetBytes(preString.Trim());
byte[] result = new byte[preBytes.Length * 2];
int seed = preBytes.Length, j = preBytes[preBytes.Length - 1];
VBMath.Randomize(preBytes.Length);
int i = 0;
foreach (byte vByte in preBytes)
{
seed = (int)(94 * VBMath.Rnd(-vByte - seed * j) + 32);
result[i++] = (byte)seed;
result[i++] = (byte)(94 * VBMath.Rnd(-seed) + 32);
}
return Encoding.Default.GetString(result).Replace("'", "");
}