Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-core
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nanahira
ygopro-core
Commits
ebb23a9e
Commit
ebb23a9e
authored
Jan 11, 2026
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master' into develop
parents
d8381ab6
2185e226
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
15 additions
and
5 deletions
+15
-5
buffer.h
buffer.h
+3
-3
mtrandom.h
mtrandom.h
+12
-2
No files found.
buffer.h
View file @
ebb23a9e
...
...
@@ -22,7 +22,7 @@ inline void buffer_write_block(unsigned char*& p, const void* src, size_t size)
p
+=
size
;
}
template
<
typename
T
>
inline
void
buffer_write
(
unsigned
char
*&
p
,
T
value
)
{
inline
void
buffer_write
(
unsigned
char
*&
p
,
const
T
&
value
)
{
std
::
memcpy
(
p
,
&
value
,
sizeof
(
T
));
p
+=
sizeof
(
T
);
}
...
...
@@ -30,10 +30,10 @@ inline void buffer_write(unsigned char*& p, T value) {
inline
void
vector_write_block
(
std
::
vector
<
unsigned
char
>&
buffer
,
const
void
*
src
,
size_t
size
)
{
const
auto
len
=
buffer
.
size
();
buffer
.
resize
(
len
+
size
);
std
::
memcpy
(
&
buffer
[
len
]
,
src
,
size
);
std
::
memcpy
(
buffer
.
data
()
+
len
,
src
,
size
);
}
template
<
typename
T
>
inline
void
vector_write
(
std
::
vector
<
unsigned
char
>&
buffer
,
T
value
)
{
inline
void
vector_write
(
std
::
vector
<
unsigned
char
>&
buffer
,
const
T
&
value
)
{
vector_write_block
(
buffer
,
&
value
,
sizeof
(
T
));
}
...
...
mtrandom.h
View file @
ebb23a9e
...
...
@@ -59,9 +59,9 @@ public:
return
l
+
(
int
)(
x
%
range
);
}
#pragma warning(disable:4146)
// N % k = (N - k) % k = (-k) % k
// discard (N % range) numbers from the left end so that it is a multiple of range
#pragma warning(disable:4146)
int
get_random_integer_v2
(
int
l
,
int
h
)
{
uint32_t
range
=
(
h
-
l
+
1
);
uint32_t
bound
=
-
range
%
range
;
...
...
@@ -75,7 +75,7 @@ public:
// Fisher-Yates shuffle [first, last)
template
<
typename
T
>
void
shuffle_vector
(
std
::
vector
<
T
>&
v
,
int
first
=
0
,
int
last
=
INT32_MAX
,
int
version
=
2
)
{
void
shuffle_vector
(
std
::
vector
<
T
>&
v
,
int
first
,
int
last
,
int
version
)
{
if
((
size_t
)
last
>
v
.
size
())
last
=
(
int
)
v
.
size
();
auto
distribution
=
&
mtrandom
::
get_random_integer_v2
;
...
...
@@ -87,6 +87,16 @@ public:
}
}
template
<
typename
T
>
void
shuffle_vector
(
std
::
vector
<
T
>&
v
)
{
shuffle_vector
(
v
,
0
,
(
int
)
v
.
size
(),
2
);
}
template
<
typename
T
>
void
shuffle_vector
(
std
::
vector
<
T
>&
v
,
int
first
,
int
last
)
{
shuffle_vector
(
v
,
first
,
last
,
2
);
}
private:
std
::
mt19937
rng
;
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment